Simplemente puede usar DataFrame.fillna
para llenar los nan
's directamente:
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
El docstring de fillna
dice que value
debería ser un escalar o un dict, sin embargo, parece funcionar también con un Series
. Si quieres aprobar un dict, puedes usarlo df.mean().to_dict()
.
df.fillna(df.mean())
devolverá el nuevo marco de datos, por lo que deberá escribirdf=df.fillna(df.mean())
para conservarlo.df=df.fillna(df.mean())
usted también podría usardf.fillna(df.mean(), inplace=True)
Tratar:
fuente
Aplique por columna la media de esas columnas y complete
fuente
fuente
Si desea imputar valores perdidos con media y desea ir columna por columna, entonces esto solo imputará con la media de esa columna. Esto podría ser un poco más legible.
fuente
Use directamente
df.fillna(df.mean())
para llenar todo el valor nulo con mediaSi desea completar el valor nulo con la media de esa columna, puede usar esto
supongamos que
x=df['Item_Weight']
aquíItem_Weight
está el nombre de la columnaaquí estamos asignando (rellene los valores nulos de x con la media de x en x)
Si desea completar el valor nulo con alguna cadena, use
aquí
Outlet_size
está el nombre de la columnafuente
Otra opción además de las anteriores es:
Es menos elegante que las respuestas anteriores para la media, pero podría ser más corto si desea reemplazar los valores nulos por alguna otra función de columna.
fuente
Pandas: cómo reemplazar los
nan
valores de NaN ( ) con el promedio (media), mediana u otras estadísticas de una columnaDigamos que su DataFrame es
df
y tiene una columna llamadanr_items
. Esto es:df['nr_items']
Si desea reemplazar los
NaN
valores de su columnadf['nr_items']
con la media de la columna :Método de uso
.fillna()
:mean_value=df['nr_items'].mean()
df['nr_item_ave']=df['nr_items'].fillna(mean_value)
He creado una nueva
df
columna llamadanr_item_ave
para almacenar la nueva columna con losNaN
valores reemplazados por elmean
valor de la columna.Debe tener cuidado al usar el
mean
. Si tiene valores atípicos es más recomendable usar elmedian
fuente
utilizando la clase de preprocesamiento de la biblioteca sklearn
Nota: en la versión reciente, el
missing_values
valor del parámetro cambia anp.nan
deNaN
fuente