Guide Ultime Traitement Donnees Manquantes Pandas

Le traitement des données manquantes est un aspect crucial de l’analyse des données et de la modélisation. Les ensembles de données incomplets peuvent poser des problèmes lors de l’analyse de données et donner lieu à des résultats biaisés ou inexacts. Pandas, une puissante bibliothèque Python pour la manipulation et l’analyse de données, fournit diverses fonctions pour traiter les données manquantes.

Dans ce tutoriel, nous allons explorer différentes techniques de traitement des données manquantes avec Pandas, notamment la suppression des valeurs manquantes, le remplissage des valeurs manquantes et l’interpolation des valeurs manquantes. Nous verrons également comment traiter les données manquantes dans les séries temporelles et les données catégorielles, ainsi que comment traiter les données manquantes pour les algorithmes de Machine Learning.

À la fin de ce tutoriel, tu auras une compréhension complète des meilleures pratiques de traitement des données manquantes avec Pandas, et tu seras équipé des compétences nécessaires pour préparer tes données en vue d’une analyse ou d’une modélisation efficaces.

Vérification des données manquantes

La première étape du traitement des données manquantes consiste à vérifier s’il existe des valeurs manquantes dans l’ensemble de données. Nous pouvons utiliser les fonctions isna() ou isnull() pour vérifier les données manquantes.

import pandas as pd

# Créer un échantillon de données (dataframe)
df = pd.DataFrame({'A': [1, 2, None, 4], 'B': [5, None, 7, 8], 'C': [9, 10, 11, 12]})

# Vérification des données manquantes
print(df.isna())

Le résultat sera le suivant :

       A      B      C
0  False  False  False
1  False   True  False
2   True  False  False
3  False  False  False

Cela montre que la deuxième ligne de la colonne « B » et la troisième ligne de la colonne « A » ont des valeurs manquantes.

Abandon des données manquantes

Une façon de traiter les données manquantes consiste à supprimer les lignes ou les colonnes qui contiennent des valeurs manquantes. Pour ce faire, nous pouvons utiliser la fonction dropna().

# Supprimer les lignes contenant des données manquantes
df = df.dropna()

# Supprimer les colonnes avec des données manquantes
df = df.dropna(axis=1)

Le DataFrame qui en résulte est présenté ci-dessous :

     A    B   C
0  1.0  5.0   9
3  4.0  8.0  12

Remplissage des données manquantes

Une autre façon de traiter les données manquantes consiste à compléter les valeurs manquantes par une valeur quelconque. Pour ce faire, nous pouvons utiliser la fonction fillna().

# Créer un échantillon de données (dataframe)
df = pd.DataFrame({'A': [1, 2, None, 4], 'B': [5, None, 7, 8], 'C': [9, 10, 11, 12]})

# Remplir/compléter les valeurs manquantes par une valeur constante
df = df.fillna(0)

Le dataframe qui en résulte est présenté ci-dessous :

     A    B   C
0  1.0  5.0   9
1  2.0  0.0  10
2  0.0  7.0  11
3  4.0  8.0  12

Dans l’exemple ci-dessus, les valeurs manquantes sont remplacées par 0.

# Créer un échantillon de données (dataframe)
df = pd.DataFrame({'A': [1, 2, None, 4], 'B': [5, None, 7, 8], 'C': [9, 10, 11, 12]})

# Compléter les valeurs manquantes par la valeur moyenne de la colonne
df = df.fillna(df.mean())

Le dataframe qui en résulte est présenté ci-dessous :

          A         B   C
0  1.000000  5.000000   9
1  2.000000  6.666667  10
2  2.333333  7.000000  11
3  4.000000  8.000000  12

Dans l’exemple ci-dessus, les valeurs manquantes sont remplacées par la valeur moyenne de la colonne correspondante.

# Créer un échantillon de données (dataframe)
df = pd.DataFrame({'A': [1, 2, None, 4], 'B': [5, None, 7, 8], 'C': [9, 10, 11, 12]})

# Compléter les valeurs manquantes par la valeur du mode de la colonne
df = df.fillna(df.mode().iloc[0]) 

Le dataframe qui en résulte est présenté ci-dessous :

     A    B   C
0  1.0  5.0   9
1  2.0  5.0  10
2  1.0  7.0  11
3  4.0  8.0  12

Dans l’exemple ci-dessus, les valeurs manquantes sont remplacées par la valeur du mode de la colonne correspondante.

Interpolation des données manquantes

L’interpolation est une méthode permettant de combler les valeurs manquantes en les estimant sur la base des valeurs d’autres points de données. Nous pouvons utiliser la fonction interpolate() pour interpoler les valeurs manquantes.

# Créer un échantillon de données (dataframe)
df = pd.DataFrame({'A': [1, 2, None, 4], 'B': [5, None, 7, 8], 'C': [9, 10, 11, 12]})

# Interpoler les valeurs manquantes à l'aide de l'interpolation linéaire
df = df.interpolate()

Le dataframe qui en résulte est présenté ci-dessous :

     A    B   C
0  1.0  5.0   9
1  2.0  6.0  10
2  3.0  7.0  11
3  4.0  8.0  12

Dans l’exemple ci-dessus, l’interpolation linéaire est utilisée pour interpoler les valeurs manquantes.

Remplissage en avant et en arrière

Le remplissage avant et arrière est une méthode permettant de compléter les valeurs manquantes par la dernière valeur connue. Pour ce faire, nous pouvons utiliser les fonctions ffill() et bfill().

# Créer un échantillon de données (dataframe)
df = pd.DataFrame({'A': [1, 2, None, 4], 'B': [5, None, 7, 8], 'C': [9, 10, 11, 12]})
# Remplissage des valeurs manquantes avec la valeur précédente
df = df.ffill()
     A    B   C
0  1.0  5.0   9
1  2.0  5.0  10
2  2.0  7.0  11
3  4.0  8.0  12
# Remplissage des valeurs manquantes avec la valeur suivante
df = df.bfill()
     A    B   C
0  1.0  5.0   9
1  2.0  7.0  10
2  4.0  7.0  11
3  4.0  8.0  12

Il s’agit de quelques-unes des façons de gérer les données manquantes avec pandas. Il est important de choisir la bonne méthode en fonction du type de données et de l’analyse que tu effectues.

Traitement des données manquantes dans les séries temporelles

Les données de séries temporelles sont un type particulier de données où chaque point de données est associé à un moment spécifique. Le traitement des données manquantes dans les séries temporelles nécessite une attention particulière car l’ordre des points de données est important.

Nous pouvons utiliser la fonction resample() de pandas pour ré-échantillonner les données à une fréquence différente et remplir les valeurs manquantes à l’aide de la fonction fillna().

import numpy as np

# Créer un échantillon de données de séries temporelles avec des valeurs manquantes
date_rng = pd.date_range(start='1/1/2022', end='1/10/2022', freq='D')
ts = pd.DataFrame(date_rng, columns=['date'])
ts['data'] = np.random.randint(0,100,size=(len(date_rng)))
ts = ts.set_index('date')
ts = ts.mask(np.random.random(ts.shape) < 0.1)

# Ré-échantillonner les données pour compléter les valeurs manquantes
ts_resampled = ts.resample('D').asfreq().fillna(method='ffill')

Dans cet exemple, nous avons d’abord créé une série de données temporelles avec des valeurs manquantes. Nous avons ensuite ré-échantillonné les données pour compléter les valeurs manquantes à l’aide d’un remplissage par anticipation.

Pour en savoir plus sur les séries temporelles, je t’invite à consulter mon cours sur l’analyse et la prévision des séries temporelles.

Traitement des données manquantes dans les données catégorielles

Les données catégorielles sont un type de données dont les valeurs sont divisées en catégories ou en groupes. Le traitement des données manquantes dans les données catégorielles nécessite une attention particulière car les valeurs manquantes peuvent avoir une signification spéciale.

Nous pouvons utiliser la fonction fillna() avec le paramètre de méthode ffill ou bfill pour compléter les valeurs manquantes avec la dernière valeur connue. Nous pouvons également compléter les valeurs manquantes par une nouvelle catégorie ou une nouvelle étiquette.

Nous avons d’abord créé un dataframe contenant des données catégorielles.

# Créer un exemple de dataframe avec des données catégorielles
df = pd.DataFrame({'A': ['chat', 'chien', 'chat', None, 'chien', 'oiseau', 'chat']})

Cela créera le dataframe suivant :

        A
0    chat
1   chien
2    chat
3    None
4   chien
5  oiseau
6    chat

Nous pouvons compléter les valeurs manquantes à l’aide de la dernière valeur connue en procédant comme suit :

# Compléter les valeurs manquantes par la dernière valeur connue
df = df.fillna(method='ffill') 

Le dataframe mis à jour est présenté ci-dessous :

        A
0    chat
1   chien
2    chat
3    chat
4   chien
5  oiseau
6    chat

Nous pouvons également compléter les valeurs manquantes par une nouvelle catégorie. Dans l’exemple suivant, une nouvelle catégorie « inconnu » est ajoutée aux données.

# Créer un exemple de dataframe avec des données catégorielles
df = pd.DataFrame({'A': ['chat', 'chien', 'chat', None, 'chien', 'oiseau', 'chat']})

# Compléter les valeurs manquantes avec une nouvelle catégorie
df = df.fillna('inconnu') 

Le dataframe mis à jour est présenté ci-dessous :

         A
0     chat
1    chien
2  inconnu
3     chat
4    chien
5   oiseau
6     chat

Le traitement des données manquantes est une étape importante de l’analyse et de la modélisation des données. Pandas fournit une variété de fonctions pour gérer les données manquantes. Il est important de choisir la bonne méthode en fonction du type de données et de l’analyse que tu effectues.

Traitement des données manquantes pour les algorithmes de Machine Learning

Le traitement des données manquantes est une étape cruciale dans la préparation des données pour les algorithmes de Machine Learning. Dans de nombreux cas, les algorithmes de Machine Learning ne peuvent pas gérer les données manquantes, et nous devons donc les traiter avant d’introduire les données dans l’algorithme.

Nous pouvons utiliser la classe SimpleImputer du module sklearn.impute pour imputer les valeurs manquantes dans un ensemble de données. La classe SimpleImputer propose plusieurs stratégies pour imputer les valeurs manquantes, telles que la moyenne, la médiane et le mode.

from sklearn.impute import SimpleImputer

# Créer un échantillon de données avec des valeurs manquantes
df_ml = pd.DataFrame({'A': [1, 2, None, 4], 'B': [5, None, 7, 8], 'C': [9, 10, 11, None]})

# Créer un objet SimpleImputer avec une stratégie de moyenne
imputer = SimpleImputer(strategy='mean')

# Imputer les valeurs manquantes
df_ml_imputed = imputer.fit_transform(df_ml)

Dans cet exemple, nous avons d’abord créé un dataframe avec des valeurs manquantes. Nous avons ensuite créé un objet SimpleImputer avec strategy=’mean’ et l’avons utilisé pour imputer les valeurs manquantes.

Après avoir imputé les valeurs manquantes, nous pouvons utiliser les données obtenues pour entraîner des modèles de Machine Learning. Il est important de garder à l’esprit que l’imputation des valeurs manquantes peut introduire un biais dans les données, c’est pourquoi nous devons choisir la stratégie d’imputation avec soin en fonction du type de données et de l’analyse que nous effectuons.

Conclusion

Le traitement des données manquantes est une étape importante de l’analyse et de la modélisation des données. Pandas fournit une variété de fonctions pour traiter les données manquantes, telles que l’élimination des valeurs manquantes, le remplissage des valeurs manquantes avec une valeur constante et l’interpolation des valeurs manquantes. Nous avons également abordé la manière de traiter les données manquantes dans les séries temporelles et les données catégorielles, ainsi que la manière de traiter les données manquantes avec les algorithmes de Machine Learning. Il est important de choisir la bonne méthode en fonction du type de données et de l’analyse que tu effectues.

Si tu as aimé ce tutoriel, tu peux également lire ce tuto sur le nettoyage des données avec Python.

Publications similaires

0 Commentaires
Le plus récent
Le plus ancien Le plus populaire
Commentaires en ligne
Afficher tous les commentaires