A função DataFrame.fillna() bi­bli­o­teca Python Pandas é utilizada para subs­ti­tuir valores ausentes num DataFrame. Isto pode ser muito útil para facilitar os processos de limpeza de dados ou para realizar análises.

Sintaxe da função fillna()Pandas

A função fillna() aceita até cinco pa­râ­me­tros e a sua sintaxe é a seguinte:

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
python

Pa­râ­me­tros re­le­van­tes

Podemos ajustar o com­por­ta­mento da função DataFrame.fillna() do Pandas uti­li­zando os seguintes pa­râ­me­tros:

Parâmetro Descrição Valor padrão
value Um valor escalar, um di­ci­o­ná­rio Python ou uma série para subs­ti­tuir os valores NaN None
method Indica o método de pre­en­chi­mento: pre­en­chi­mento para a frente (ffill) ou pre­en­chi­mento para trás (bfill) None
axis Determina ao longo de qual eixo a operação será realizada (0 ou index para as linhas, 1 ou columns para as colunas) 0
inplace Se for True, as al­te­ra­ções são feitas di­re­ta­mente no DataFrame original False
limit Inteiro que limita o número de valores NaN a subs­ti­tuir None
Nota

É provável que o parâmetro method deixe de ser com­pa­tí­vel em versões futuras. Os pro­gra­ma­do­res poderão então utilizar obj.ffill() ou obj.bfill(), res­pe­ti­va­mente, uma vez que têm o mesmo efeito que o parâmetro method.

Uti­li­za­ção do método DataFrame.fillna() do Pandas

Existem di­fe­ren­tes formas de utilizar a função fillna() do Pandas:

Subs­ti­tui­ção de valores NaN por um valor fixo

O primeiro passo consiste em definir um DataFrame:

import pandas as pd
# Ejemplo de DataFrame con diferentes valores
data = {
    'A': [1, 2, None, 4],
    'B': [None, 2, 3, 4],
    'C': [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)
python

A aparência do DataFrame que acabámos de definir é a seguinte:

A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  NaN
2  NaN  3.0  3.0
3  4.0  4.0  4.0
Nota

Tenha em atenção que, no Pandas, o valor None é in­ter­pre­tado como NaN em Da­ta­Fra­mes e Series.

Agora pode utilizar a função fillna() do Pandas para subs­ti­tuir os valores em falta pelo valor 0:

# Reemplazo de los valores faltantes por el valor 0
df_filled = df.fillna(0)
print(df_filled)
python

Todos os valores NaN incluídos na função foram subs­ti­tuí­dos por 0:

A    B    C
0  1.0  0.0  1.0
1  2.0  2.0  0.0
2  0.0  3.0  3.0
3  4.0  4.0  4.0

Uti­li­za­ção do método de pre­en­chi­mento para a frente ffill

O método ffill pode ser utilizado para preencher os valores NaN com os valores an­te­ri­o­res de cada coluna. Para isso, é ne­ces­sá­rio passá-lo como parâmetro para a função:

# Reemplazo de todos los valores NaN por el valor anterior
df_ffill = df.fillna(method='ffill')
print(df_ffill)
python

Neste exemplo, os valores NaN nas colunas «A» e «C» foram subs­ti­tuí­dos pelos valores an­te­ri­o­res na mesma coluna. Como na coluna «B» não havia nenhum valor anterior, o valor NaN foi mantido:

A    B    C
0  1.0  NaN  1.0
1  2.0  2.0  1.0
2  2.0  3.0  3.0
3  4.0  4.0  4.0

Uti­li­za­ção do método de pre­en­chi­mento re­tro­a­tivo bfill por linhas

Os valores NaN também podem ser pre­en­chi­dos com os valores pos­te­ri­o­res da mesma linha. Para isso, deve usar o método bfill e, além disso, definir o parâmetro axis em 1:

df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)
python

Como resultado, os valores NaN na linha zero e na linha dois foram subs­ti­tuí­dos pelos seus valores pos­te­ri­o­res, res­pe­ti­va­mente. Na primeira linha, permanece um valor NaN, uma vez que nessa linha não existe nenhum valor posterior com o qual o subs­ti­tuir.

A    B    C
0  1.0  1.0  1.0
1  2.0  2.0  NaN
2  3.0  3.0  3.0
3  4.0  4.0  4.0
Ir para o menu principal