15.4 Analyse exploratoire des données
Objectifs d'apprentissage
À la fin de cette section, vous devriez être capable de :
- Décrire l'analyse exploratoire des données.
- Inspecter les entrées d'un DataFrame à l'aide d'une indexation appropriée.
- Utiliser le filtrage et le découpage pour obtenir un sous-ensemble d'un DataFrame.
- Identifier les valeurs
Nulldans un DataFrame. - Supprimer ou remplacer les valeurs
Nulldans un DataFrame.
Analyse exploratoire des données
L'analyse exploratoire des données (Exploratory Data Analysis (EDA)) est la tâche consistant à analyser des données afin d'en tirer des enseignements, d'identifier des motifs et de comprendre la structure sous-jacente des données. Durant l'EDA, les scientifiques des données examinent les données de manière visuelle et statistique afin de découvrir des relations, des anomalies et des tendances, ainsi que de formuler des hypothèses pour des analyses plus approfondies. L'objectif principal de l'EDA est de se familiariser avec les données et d'évaluer leur qualité. Une fois les données comprises et nettoyées, les scientifiques des données peuvent procéder à la création de caractéristiques et à la formulation d'hypothèses. Une caractéristique (feature) est une variable ou un attribut individuel calculé à partir des données brutes du jeu de données.
L'indexation de données (Data indexing) peut être utilisée pour sélectionner des lignes et des colonnes spécifiques et y accéder. L'indexation de données est essentielle pour examiner un jeu de données. Dans Pandas, il existe deux méthodes d'indexation :
- Indexation basée sur les étiquettes à l'aide de
loc[]: loc[] vous permet d'accéder aux données d'un DataFrame à l'aide des étiquettes de ligne et de colonne. Ex. :df.loc[row_label, column_label]renvoie des données spécifiques à l'intersection derow_labeletcolumn_label. - Indexation basée sur les entiers à l'aide de
iloc[]: iloc[] vous permet d'accéder aux données d'un DataFrame à l'aide d'indices entiers. Des indices entiers peuvent être transmis pour récupérer des données spécifiques. Ex. :df.iloc[row_index, column_index]renvoie des données spécifiques aux indicesrow_indexetcolumn_index.
Concepts en pratique
Indexation de DataFrame
Étant donné le code suivant, répondez aux questions ci-dessous.
import pandas as pd
# Create sample data
data = {
"A": ["a", "b", "c", "d"],
"B": [12, 20, 5, -10],
"C": ["C", "C", "C", "C"]
}
df = pd.DataFrame(data)
Découpage et filtrage de données
Le découpage et le filtrage de données consistent à sélectionner des sous-ensembles spécifiques de données en fonction de certaines conditions ou d'intervalles d'indices/d'étiquettes. Le découpage de données (Data slicing) fait référence à la sélection d'un sous-ensemble de lignes et/ou de colonnes d'un DataFrame. Le découpage peut être effectué à l'aide d'intervalles, de listes ou de conditions booléennes.
- Découpage à l'aide d'intervalles : Ex. :
df.loc[start_row:end_row, start_column:end_column]sélectionne les lignes et les colonnes dans les plages spécifiées. - Découpage à l'aide d'une liste : Ex. :
df.loc[[label1, label2, ...], :]sélectionne les lignes qui se trouvent dans la liste[label1, label2, ...]et inclut toutes les colonnes puisque toutes les colonnes sont sélectionnées par l'opérateur deux-points. - Découpage fondé sur une condition :
df[condition]sélectionne uniquement les lignes qui remplissent laconditiondonnée.
Le filtrage de données (Data filtering) consiste à sélectionner des lignes ou des colonnes en fonction de certaines conditions. Ex. : Dans l'expression df[df['column_name'] > threshold], le DataFrame df est filtré à l'aide de l'opérateur de sélection ([]) et de la condition (df['column_name'] > threshold) qui est transmise. Toutes les entrées du DataFrame df où la valeur correspondante dans le DataFrame est True seront renvoyées.
Concepts en pratique
Découpage et filtrage de DataFrame
Étant donné le code suivant, répondez aux questions.
import pandas as pd
# Create sample data
data = {
"A": [1, 2, 3, 4],
"B": [5, 6, 7, 8],
"C": [9, 10, 11, 12]
}
df = pd.DataFrame(data)
Gestion des données manquantes
Des valeurs manquantes dans un jeu de données peuvent survenir lorsque les données ne sont pas disponibles ou ne sont pas enregistrées correctement. L'identification et la suppression des valeurs manquantes constituent une étape importante du nettoyage et du prétraitement des données. Un scientifique des données doit prendre en compte des considérations éthiques tout au long du processus d'EDA, en particulier lors du traitement des données manquantes. Il peut envisager de répondre à des questions telles que « Pourquoi ces données sont-elles manquantes ? », « À qui appartiennent les données manquantes ? » et « Compte tenu des données manquantes, le jeu de données constitue-t-il toujours un échantillon représentatif de la population étudiée ? ». Les fonctions ci-dessous sont utiles pour comprendre et analyser les données manquantes.
isnull(): La fonctionisnull()peut être utilisée pour identifier les entrées Null dans un DataFrame. La valeur de retour de la fonction est un DataFrame booléen, ayant les mêmes dimensions que le DataFrame d'origine, avec des valeursTruelà où des valeurs manquantes existent.dropna(): La fonctiondropna()peut être utilisée pour supprimer les lignes contenant des valeursNull.fillna(): La fonctionfillna()peut être utilisée pour remplacer les valeursNullpar une valeur de substitution fournie. Ex. :df.fillna(df.mean())remplace toutes les valeursNullpar la valeur moyenne de la colonne spécifique.
Pour définir une valeur Null dans un DataFrame, vous pouvez utiliser la valeur np.nan de la bibliothèque NumPy. Les fonctions qui facilitent l'identification et la suppression des entrées nulles sont décrites dans le tableau sous le code suivant.
import pandas as pd
import numpy as np
# Create sample data
data = {
"Column 1": ["A", "B", "C", "D", "E"],
"Column 2": [np.NAN, 200, 500, 0, -10],
"Column 3": [True, True, False, np.NaN, np.NaN]
}
df = pd.DataFrame(data)
| Column 1 | Column 2 | Column 3 | |
|---|---|---|---|
| 0 | A | NaN | True |
| 1 | B | 200.0 | True |
| 2 | C | 500.0 | False |
| 3 | D | 0.0 | NaN |
| 4 | E | -10.0 | NaN |
| Fonction | Exemple | Sortie | Explication | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
isnull() |
df.isnull() |
|
La fonction |
||||||||||||||||||||||||
fillna() |
df["Column 2"] =\
df["Column 2"].fillna(df["Column 2"]
.mean()) |
|
Les valeurs |
||||||||||||||||||||||||
dropna() |
# Applied after the run
# of the previous row
df = df.dropna() |
|
Toutes les lignes contenant une valeur |
Concepts en pratique
Traitement des valeurs manquantes
Exercices de programmation avec Google Colaboratory
Utilisez le document Google Colaboratory ci-dessous pour vous entraîner à l'EDA sur un jeu de données donné.