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