Pandas DataFrame DataFrame.fillna() Função

Suraj Joshi 30 janeiro 2023
  1. Sintaxe de pandas.DataFrame.fillna():
  2. Códigos de exemplo: Preencher todos os valores NaN em DataFrame com DataFrame.fillna() Método
  3. Códigos de exemplo: DataFrame.fillna() Método com o parâmetro method
  4. Códigos de exemplo: DataFrame.fillna() Método com o parâmetro limit
Pandas DataFrame DataFrame.fillna() Função

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 avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Pandas DataFrame