Pandas DataFrame DataFrame.fillna() Função
-
Sintaxe de
pandas.DataFrame.fillna(): -
Códigos de exemplo: Preencher todos os valores
NaNemDataFramecomDataFrame.fillna()Método -
Códigos de exemplo:
DataFrame.fillna()Método com o parâmetromethod -
Códigos de exemplo:
DataFrame.fillna()Método com o parâmetrolimit
A função pandas.DataFrame.fillna() substitui os valores NaN em DataFrame por algum determinado valor.
Sintaxe de pandas.DataFrame.fillna():
DataFrame.fillna(
value=None, method=None, axis=None, inplace=False, limit=None, downcast=None
)
Parâmetros
value |
scalar, dict, Series, ou DataFrame. Valor utilizado para substituir os valores NaN. |
method |
backfill, bfill, pad, ffill ou None. Método utilizado para preencher os valores NaN. |
axis |
Preencher valores ausentes ao longo da linha (axis=0) ou coluna (axis=1) |
inplace |
Booleano. Se True, modificar no local a opção de chamada DataFrame. |
limit |
Inteiro. Se o method for especificado, é o número máximo de valores consecutivos NaN a serem preenchidos para frente/para trás. Se o method não for dado, é o número máximo de NaN no eixo a ser preenchido. |
downcast |
Dicionário. Especifica os tipos de dados em baixa |
Retornar
Se inplace é True, um DataFrame substitui todos os valores NaN por um dado value; caso contrário, None.
Códigos de exemplo: Preencher todos os valores NaN em DataFrame com DataFrame.fillna() Método
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(5)
print("Filled DataFrame:")
print(filled_df)
Resultado:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 5.0
2 3.0 8.0
3 5.0 5.0
4 3.0 3.0
Preenche todos os valores NaN em DataFrame com 5 fornecidos como argumento no método pandas.DataFrame.fillna().
DataFrame.fillna() Com média
Também seria uma boa idéia substituir os valores NaN de uma coluna por meio dessa coluna.
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
df.fillna(df.mean(),inplace=True)
print("Filled DataFrame:")
print(df)
Resultado:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.00 4.0
1 2.00 5.0
2 3.00 8.0
3 2.25 5.0
4 3.00 3.0
Preenche os valores NaN da coluna X por meio da coluna X e NaN da coluna Y por meio da coluna Y.
Devido a inplace=True, o original DataFrame é modificado após chamar a função fillna().
DataFrame.fillna() Com 0
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
df.fillna(0,inplace=True)
print("Filled DataFrame:")
print(df)
Resultado:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 0.0
2 3.0 8.0
3 0.0 0.0
4 3.0 3.0
Preenche todos os NaN com 0.
Códigos de exemplo: DataFrame.fillna() Método com o parâmetro method
Também podemos preencher os valores NaN em DataFrame utilizando diferentes escolhas do parâmetro method.
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2, 3, np.nan, 3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(method="backfill")
print("Filled DataFrame:")
print(filled_df)
Resultado:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 3.0 8.0
3 NaN NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 8.0
2 3.0 8.0
3 3.0 3.0
4 3.0 3.0
A configuração method="backfill" preenche todos os valores NaN de DataFrame com o valor após o valor NaN na mesma coluna.
Também podemos utilizar métodos bfill, pad e ffill para preencher os valores NaN em DataFrame.
method |
Descrição |
|---|---|
backfill / bfill |
preencher todos os valores NaN de DataFrame com o valor após o valor NaN na mesma coluna. |
ffill / pad |
preencher todos os valores NaN de DataFrame com o valor antes do valor NaN na mesma coluna. |
Códigos de exemplo: DataFrame.fillna() Método com o parâmetro limit
O parâmetro limit em DataFrame.fillna() método restringe o número máximo de valores consecutivos NaN a serem preenchidos pelo método.
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [1, 2,np.nan, 3,3],
'Y': [4, np.nan, 8, np.nan, 3]})
print("DataFrame:")
print(df)
filled_df = df.fillna(3,limit=1)
print("Filled DataFrame:")
print(filled_df)
Resultado:
DataFrame:
X Y
0 1.0 4.0
1 2.0 NaN
2 NaN 8.0
3 3.0 NaN
4 3.0 3.0
Filled DataFrame:
X Y
0 1.0 4.0
1 2.0 3.0
2 3.0 8.0
3 3.0 NaN
4 3.0 3.0
Aqui, uma vez que um NaN é preenchido em uma coluna, o outro valor de NaN na mesma coluna permanece como está.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn