Pandas : comment remplir les valeurs NaN avec la moyenne (3 exemples)



Vous pouvez utiliser la fonction fillna() pour remplacer les valeurs NaN dans un DataFrame pandas.

Voici trois manières courantes d’utiliser cette fonction :

Méthode 1 : remplir les valeurs NaN dans une colonne avec la moyenne

df['col1'] = df['col1'].fillna(df['col1'].mean())

Méthode 2 : remplir les valeurs NaN dans plusieurs colonnes avec la moyenne

df[['col1', 'col2']] = df[['col1', 'col2']].fillna(df[['col1', 'col2']].mean())

Méthode 3 : remplir les valeurs NaN dans toutes les colonnes avec la moyenne

df = df.fillna(df.mean())

Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le DataFrame pandas suivant :

import numpy as np
import pandas as pd

#create DataFrame with some NaN values
df = pd.DataFrame({'rating': [np.nan, 85, np.nan, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, np.nan, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, np.nan, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#view DataFrame
df

        rating	points	assists	rebounds
0	NaN	25.0	5.0	11
1	85.0	NaN	7.0	8
2	NaN	14.0	7.0	10
3	88.0	16.0	NaN	6
4	94.0	27.0	5.0	6
5	90.0	20.0	7.0	9
6	76.0	12.0	6.0	6
7	75.0	15.0	9.0	10
8	87.0	14.0	9.0	10
9	86.0	19.0	5.0	7

Exemple 1 : Remplissez les valeurs NaN dans une colonne avec la moyenne

Le code suivant montre comment remplir les valeurs NaN dans la colonne de notation avec la valeur moyenne de la colonne de notation :

#fill NaNs with column mean in 'rating' column
df['rating'] = df['rating'].fillna(df['rating'].mean())

#view updated DataFrame 
df

	rating	points	assists	rebounds
0	85.125	25.0	5.0	11
1	85.000	NaN	7.0	8
2	85.125	14.0	7.0	10
3	88.000	16.0	NaN	6
4	94.000	27.0	5.0	6
5	90.000	20.0	7.0	9
6	76.000	12.0	6.0	6
7	75.000	15.0	9.0	10
8	87.000	14.0	9.0	10
9	86.000	19.0	5.0	7

La valeur moyenne dans la colonne de notation était de 85,125 , donc chacune des valeurs NaN de la colonne de notation était remplie avec cette valeur.

Exemple 2 : Remplissez les valeurs NaN dans plusieurs colonnes avec la moyenne

Le code suivant montre comment remplir les valeurs NaN dans les colonnes de notation et de points avec leurs moyennes de colonne respectives :

#fill NaNs with column means in 'rating' and 'points' columns
df[['rating', 'points']] = df[['rating', 'points']].fillna(df[['rating', 'points']].mean())

#view updated DataFrame
df

	rating	points	assists	rebounds
0	85.125	25.0	5.0	11
1	85.000	18.0	7.0	8
2	85.125	14.0	7.0	10
3	88.000	16.0	NaN	6
4	94.000	27.0	5.0	6
5	90.000	20.0	7.0	9
6	76.000	12.0	6.0	6
7	75.000	15.0	9.0	10
8	87.000	14.0	9.0	10
9	86.000	19.0	5.0	7

Les valeurs NaN dans les colonnes de notes et de points ont été remplies avec leurs moyennes de colonne respectives.

Exemple 3 : Remplissez les valeurs NaN dans toutes les colonnes avec la moyenne

Le code suivant montre comment remplir les valeurs NaN dans chaque colonne avec les moyennes de colonne :

#fill NaNs with column means in each column 
df = df.fillna(df.mean())

#view updated DataFrame
df

        rating	points	assists	  rebounds
0	85.125	25.0	5.000000  11
1	85.000	18.0	7.000000  8
2	85.125	14.0	7.000000  10
3	88.000	16.0	6.666667  6
4	94.000	27.0	5.000000  6
5	90.000	20.0	7.000000  9
6	76.000	12.0	6.000000  6
7	75.000	15.0	9.000000  10
8	87.000	14.0	9.000000  10
9	86.000	19.0	5.000000  7

Notez que les valeurs NaN dans chaque colonne ont été remplies avec la moyenne de leur colonne.

Vous pouvez trouver la documentation complète en ligne de la fonction fillna() ici .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :

Comment compter les valeurs manquantes chez les pandas
Comment supprimer des lignes avec des valeurs NaN dans Pandas
Comment supprimer des lignes contenant une valeur spécifique dans Pandas

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *