Você pode simplesmente usar DataFrame.fillna
para preencher os nan
itens diretamente:
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
A doutrina de fillna
diz que value
deveria ser um escalar ou um ditado, no entanto, parece funcionar também com um Series
. Se você quiser passar um ditado, você pode usar df.mean().to_dict()
.
df.fillna(df.mean())
retornará o novo quadro de dados, portanto você precisará escreverdf=df.fillna(df.mean())
para mantê-lo.df=df.fillna(df.mean())
você também poderia usardf.fillna(df.mean(), inplace=True)
Experimentar:
fonte
Aplique por coluna a média dessas colunas e preencha
fonte
fonte
Se você deseja imputar valores ausentes com média e deseja ir coluna por coluna, isso só imputará a média dessa coluna. Isso pode ser um pouco mais legível.
fonte
Use diretamente
df.fillna(df.mean())
para preencher todo o valor nulo com médiaSe você desejar preencher um valor nulo com a média dessa coluna, poderá usar este
suponha que
x=df['Item_Weight']
aquiItem_Weight
esteja o nome da colunaaqui estamos atribuindo (preencha valores nulos de x com média de x em x)
Se você deseja preencher o valor nulo com alguma string, use
aqui
Outlet_size
está o nome da colunafonte
Outra opção além das acima é:
É menos elegante que as respostas anteriores para média, mas pode ser mais curto se você desejar substituir nulos por alguma outra função de coluna.
fonte
Pandas: Como substituir os
nan
valores de NaN ( ) pela média (média), mediana ou outras estatísticas de uma colunaDigamos que seu DataFrame seja
df
e você tem uma coluna chamadanr_items
. Isto é:df['nr_items']
Se você deseja substituir os
NaN
valores da sua colunadf['nr_items']
pela média da coluna :Use o método
.fillna()
:mean_value=df['nr_items'].mean()
df['nr_item_ave']=df['nr_items'].fillna(mean_value)
Eu criei uma nova
df
coluna chamadanr_item_ave
para armazenar a nova coluna com osNaN
valores substituídos pelomean
valor da coluna.Você deve ter cuidado ao usar o
mean
. Se você tiver discrepâncias, é mais recomendável usar omedian
fonte
usando a classe de pré-processamento da biblioteca sklearn
Nota: Na versão recente,
missing_values
altere o valor do parâmetro paranp.nan
deNaN
fonte