Exhaustivité

Nettoyage des données en Python

Adel Nehme

VP of AI Curriculum, DataCamp

Qu'est-ce qu'une donnée manquante ?

Peut être représenté comme NA, nan, 0, .

 

Erreur technique

Erreur humaine

Nettoyage des données en Python

Exemple de qualité de l'air

import pandas as pd
airquality = pd.read_csv('airquality.csv')
print(airquality)
            Date  Temperature  CO2
987   20/04/2004         16.8  0.0
2119  07/06/2004         18.7  0.8
2451  20/06/2004        -40.0  NaN
1984  01/06/2004         19.6  1.8
8299  19/02/2005         11.2  1.2
...      ...             ...   ...
Nettoyage des données en Python

Exemple de qualité de l'air

import pandas as pd
airquality = pd.read_csv('airquality.csv')
print(airquality)
            Date  Temperature  CO2
987   20/04/2004         16.8  0.0
2119  07/06/2004         18.7  0.8
2451  20/06/2004        -40.0  NaN   <--
1984  01/06/2004         19.6  1.8
8299  19/02/2005         11.2  1.2
...      ...             ...   ...
Nettoyage des données en Python

Exemple de qualité de l'air

# Return missing values
airquality.isna()
       Date  Temperature    CO2
987   False        False  False
2119  False        False  False
2451  False        False   True
1984  False        False  False
8299  False        False  False
Nettoyage des données en Python

Exemple de qualité de l'air

# Get summary of missingness
airquality.isna().sum()
Date             0
Temperature      0
CO2            366
dtype: int64
Nettoyage des données en Python

Missingno

Ensemble d'outils utiles pour visualiser et comprendre les données manquantes

import missingno as msno
import matplotlib.pyplot as plt

# Visualize missingness msno.matrix(airquality) plt.show()
Nettoyage des données en Python

Nettoyage des données en Python

Exemple de qualité de l'air

# Isolate missing and complete values aside
missing = airquality[airquality['CO2'].isna()]
complete = airquality[~airquality['CO2'].isna()]
Nettoyage des données en Python

Exemple de qualité de l'air

# Describe complete DataFramee
complete.describe()
       Temperature          CO2
count  8991.000000  8991.000000
mean     18.317829     1.739584
std       8.832116     1.537580
min      -1.900000     0.000000
...      ...        ...
max      44.600000    11.900000
# Describe missing DataFramee
missing.describe()
       Temperature  CO2
count   366.000000  0.0
mean    -39.655738  NaN
std       5.988716  NaN
min     -49.000000  NaN
...      ...        ...
max     -30.000000  NaN
Nettoyage des données en Python

Exemple de qualité de l'air

# Describe complete DataFramee
complete.describe()
       Temperature          CO2
count  8991.000000  8991.000000
mean     18.317829     1.739584
std       8.832116     1.537580
min      -1.900000     0.000000
...      ...        ...
max      44.600000    11.900000
# Describe missing DataFramee
missing.describe()
       Temperature  CO2
count   366.000000  0.0
mean    -39.655738  NaN   <--
std       5.988716  NaN
min     -49.000000  NaN   <--
...      ...        ...
max     -30.000000  NaN   <--
Nettoyage des données en Python

 

sorted_airquality = airquality.sort_values(by = 'Temperature')
msno.matrix(sorted_airquality)
plt.show()

Nettoyage des données en Python

 

sorted_airquality = airquality.sort_values(by = 'Temperature')
msno.matrix(sorted_airquality)
plt.show()

Nettoyage des données en Python

Types de données manquantes

Nettoyage des données en Python

Types de données manquantes

Nettoyage des données en Python

Types de données manquantes

Nettoyage des données en Python

Types de données manquantes

Nettoyage des données en Python

Comment gérer les données manquantes ?

Approches simples :

  1. Supprimer les données manquantes
  2. Imputer à l'aide de mesures statistiques (moyenne, médiane, mode…)

Approches plus complexes :

  1. Imputation à l'aide d'une approche algorithmique
  2. Imputer à l'aide de modèles de machine learning
Nettoyage des données en Python

Traitement des données manquantes

airquality.head()
         Date  Temperature  CO2
0  05/03/2005          8.5  2.5
1  23/08/2004         21.8  0.0
2  18/02/2005          6.3  1.0
3  08/02/2005        -31.0  NaN
4  13/03/2005         19.9  0.1
Nettoyage des données en Python

Suppression des valeurs manquantes

# Drop missing values
airquality_dropped = airquality.dropna(subset = ['CO2'])
airquality_dropped.head()
         Date  Temperature  CO2
0  05/03/2005          8.5  2.5
1  23/08/2004         21.8  0.0
2  18/02/2005          6.3  1.0
4  13/03/2005         19.9  0.1
5  02/04/2005         17.0  0.8
Nettoyage des données en Python

Remplacement par des mesures statistiques

co2_mean = airquality['CO2'].mean()
airquality_imputed = airquality.fillna({'CO2': co2_mean})
airquality_imputed.head()
          Date  Temperature       CO2
0  05/03/2005          8.5  2.500000
1  23/08/2004         21.8  0.000000
2  18/02/2005          6.3  1.000000
3  08/02/2005        -31.0  1.739584
4  13/03/2005         19.9  0.100000
Nettoyage des données en Python

Passons à la pratique !

Nettoyage des données en Python

Preparing Video For Download...