Vous pouvez simplement utiliser DataFrame.fillna
pour remplir les nan
's directement:
In [27]: df
Out[27]:
A B C
0 -0.166919 0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3 NaN -2.027325 1.533582
4 NaN NaN 0.461821
5 -0.788073 NaN NaN
6 -0.916080 -0.612343 NaN
7 -0.887858 1.033826 NaN
8 1.948430 1.025011 -2.982224
9 0.019698 -0.795876 -0.046431
In [28]: df.mean()
Out[28]:
A -0.151121
B -0.231291
C -0.530307
dtype: float64
In [29]: df.fillna(df.mean())
Out[29]:
A B C
0 -0.166919 0.979728 -0.632955
1 -0.297953 -0.912674 -1.365463
2 -0.120211 -0.540679 -0.680481
3 -0.151121 -2.027325 1.533582
4 -0.151121 -0.231291 0.461821
5 -0.788073 -0.231291 -0.530307
6 -0.916080 -0.612343 -0.530307
7 -0.887858 1.033826 -0.530307
8 1.948430 1.025011 -2.982224
9 0.019698 -0.795876 -0.046431
La docstring de fillna
dit que cela value
devrait être un scalaire ou un dict, mais il semble également fonctionner avec un Series
. Si vous voulez passer un dict, vous pouvez utiliser df.mean().to_dict()
.
df.fillna(df.mean())
renverra le nouveau dataframe, vous devrez donc écriredf=df.fillna(df.mean())
pour le conserver.df=df.fillna(df.mean())
vous pouvez également utiliserdf.fillna(df.mean(), inplace=True)
Essayer:
la source
Appliquer par colonne la moyenne de ces colonnes et remplir
la source
la source
Si vous voulez imputer les valeurs manquantes avec la moyenne et que vous voulez aller colonne par colonne, cela n'impute qu'avec la moyenne de cette colonne. Cela pourrait être un peu plus lisible.
la source
Utilisez directement
df.fillna(df.mean())
pour remplir toute la valeur nulle avec la moyenneSi vous voulez remplir une valeur nulle avec la moyenne de cette colonne, vous pouvez utiliser ceci
supposons que
x=df['Item_Weight']
voici leItem_Weight
nom de la colonneici nous assignons (remplissez les valeurs nulles de x avec la moyenne de x dans x)
Si vous souhaitez remplir une valeur nulle avec une chaîne, utilisez
voici le
Outlet_size
nom de la colonnela source
Une autre option en plus de celles ci-dessus est:
C'est moins élégant que les réponses précédentes pour la moyenne, mais cela pourrait être plus court si vous souhaitez remplacer les valeurs nulles par une autre fonction de colonne.
la source
Pandas: Comment remplacer les
nan
valeurs NaN ( ) par la moyenne (moyenne), la médiane ou d'autres statistiques d'une colonneDisons que votre DataFrame est
df
et que vous avez une colonne appeléenr_items
. C'est:df['nr_items']
Si vous souhaitez remplacer les
NaN
valeurs de votre colonnedf['nr_items']
par la moyenne de la colonne :Utilisez la méthode
.fillna()
:mean_value=df['nr_items'].mean()
df['nr_item_ave']=df['nr_items'].fillna(mean_value)
J'ai créé une nouvelle
df
colonne appeléenr_item_ave
pour stocker la nouvelle colonne avec lesNaN
valeurs remplacées par lamean
valeur de la colonne.Vous devez être prudent lorsque vous utilisez le
mean
. Si vous avez des valeurs aberrantes, il est plus recommandé d'utiliser lemedian
la source
utilisation de la classe de prétraitement de la bibliothèque sklearn
Remarque: dans la version récente, la
missing_values
valeur du paramètre passe ànp.nan
deNaN
la source