Analyse exploratoire des données

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 Null dans un DataFrame.
  • Supprimer ou remplacer les valeurs Null dans 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 de row_label et column_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 indices row_index et column_index.

Faites le point

Indexation d'un DataFrame

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)
1.
Quelle est la sortie de print(df.iloc[0, 0]) ?
  1. a
  2. b
  3. IndexError
2.
Quelle est la sortie de print(df.iloc[1, 1]) ?
  1. a
  2. b
  3. 20
3.
Quelle est la sortie de print(df.loc[2, 'A']) ?
  1. c
  2. C
  3. b

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 la condition donné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.

Faites le point

Indexation sur un jeu de données de vols

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)
4.
Lequel des éléments suivants renvoie les trois premières lignes de la colonne A ?
  1. df.loc[1:3, "A"]
  2. df.loc[0:2, "A"]
  3. df.loc[0:3, "A"]
5.
Lequel des éléments suivants renvoie la deuxième ligne ?
  1. df.iloc[2]
  2. df[2]
  3. df.loc[1]
6.
Lequel des éléments suivants renvoie la première colonne ?
  1. df.loc[0, :]
  2. df.iloc[:, 0]
  3. df.loc["A"]
7.
Lequel des éléments suivants permet de sélectionner la deuxième et la quatrième ligne du DataFrame ?
  1. df[df.loc[:, "A"] % 2 == 0]
  2. df[df[:, "A"] % 2 == 0]
  3. df[df.loc["A"] % 2 == 0]

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 fonction isnull() 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 valeurs True là où des valeurs manquantes existent.
  • dropna() : La fonction dropna() peut être utilisée pour supprimer les lignes contenant des valeurs Null.
  • fillna() : La fonction fillna() peut être utilisée pour remplacer les valeurs Null par une valeur de substitution fournie. Ex. : df.fillna(df.mean()) remplace toutes les valeurs Null par 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
Tableau 15.5
Fonction Exemple Sortie Explication
isnull()
df.isnull()
Column 1 Column 2 Column 3
0 False True False
1 False False False
2 False False False
3 False False True
4 False False True

La fonction df.isnull() renvoie un tableau booléen dont les valeurs indiquent si chaque entrée est Null.

fillna()
df["Column 2"] =\
df["Column 2"].fillna(df["Column 2"]
  .mean())
Column 1 Column 2 Column 3
0 A 172.5 True
1 B 200.0 True
2 C 500.0 False
3 D 0.0 NaN
4 E -10.0 NaN

Les valeurs Null dans Column 2 sont remplacées par la moyenne des valeurs non Null de la colonne.

dropna()
# Applied after the run 
# of the previous row
df = df.dropna()
Column 1 Column 2 Column 3
0 A 172.5 True
1 B 200.0 True
2 C 500.0 False

Toutes les lignes contenant une valeur Null sont supprimées du DataFrame.

Tableau 15.6 Exemples d'identification et de suppression des valeurs nulles.

Concepts en pratique

Traitement des valeurs manquantes

8.
Lequel des éléments suivants est utilisé pour vérifier la présence de valeurs Null dans le DataFrame ?
  1. isnan()
  2. isnull()
  3. isnone()
9.
En supposant qu'un DataFrame df est donné, lequel des éléments suivants remplace les valeurs Null par des zéros ?
  1. df.fillna(0)
  2. df.replacena(0)
  3. df.fill(0)
10.
En supposant qu'un DataFrame df est donné, que fait l'expression df.isnull().sum() ?
  1. Calcule la somme des valeurs non Null dans chaque colonne
  2. Calcule le nombre de valeurs Null dans le DataFrame
  3. Calcule le nombre de valeurs Null dans chaque colonne

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é.

Document Google Colaboratory