HOWTO · Pandas
Como substituir todos os valores NaN por zeros em uma coluna de um DataFrame do pandas
substituir os valores NaN por zeros em DataFrame usando métodos df.fillna() ,df.replace() na biblioteca pandas
Nesta página
Para substituir valores ausentes em uma coluna de um DataFrame do pandas, selecione a coluna, chame fillna(0) e atribua a Series retornada de volta à mesma coluna: df["A"] = df["A"].fillna(0). Isso altera somente a coluna A; os valores das outras colunas permanecem como estão. O método df.fillna() também pode preencher valores ausentes em todo o DataFrame. Por isso, selecione primeiro uma Series quando quiser limitar a operação a uma única coluna. O método df.replace() é uma alternativa para substituir um valor específico na Series selecionada.
Substituir valores NaN em uma coluna com fillna()
fillna() substitui valores que o pandas reconhece como ausentes pelo valor informado. No exemplo, None em uma coluna numérica é representado como valor ausente quando o pandas cria o DataFrame. Atribuir o resultado de fillna(0) de volta a df["A"] incorpora a substituição a df; chamar o método sem atribuir o resultado não altera a variável do DataFrame. A segunda coluna serve de comparação e mantém o próprio valor ausente.
Execute este exemplo:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
import pandas as pd
df = pd.DataFrame({
"A": [1, 2, None, 4],
"B": [None, 2, 3, 4],
})
df["A"] = df["A"].fillna(0)
print(df.to_string())
A B
0 1.0 NaN
1 2.0 2.0
2 0.0 3.0
3 4.0 4.0
A saída mostra que o valor ausente na coluna A se tornou 0.0, enquanto o valor ausente na coluna B continua sendo NaN. Os rótulos visíveis no exemplo e a saída permanecem em inglês. Use o mesmo padrão de atribuição com seu DataFrame e a coluna desejada. fillna() também aceita outros valores de substituição e oferece estratégias de preenchimento, como o preenchimento para frente ou para trás; escolha-as somente quando forem compatíveis com o significado e a ordem dos seus dados. Aplicar df.fillna(0) ao próprio DataFrame preenche valores ausentes em suas colunas, em vez de somente na coluna A.
Substituir valores NaN em uma coluna com replace()
replace() é outra opção quando você quer substituir um valor específico ou um conjunto de valores. Para substituir um valor ausente em uma Series, use df["A"].replace(float("nan"), 0) e atribua a Series retornada de volta a df["A"]. Esse exemplo informa explicitamente um valor NaN; não presuma que None sempre será tratado como NaN por replace(). Assim como com fillna(), usar o método na Series selecionada limita a operação àquela coluna. Chamar df.replace(...) no DataFrame inteiro pode afetar valores correspondentes em várias colunas.
Para esta tarefa, fillna() expressa a intenção diretamente. Use replace() quando o comportamento de correspondência por valor for útil, por exemplo, se também precisar padronizar um marcador conhecido na coluna selecionada. Nos dois exemplos, atribua o resultado retornado quando o código seguinte precisar usar os dados alterados; inplace=True não é necessário neste padrão.
Escolher um valor de substituição adequado aos dados
O zero só é adequado quando representa o significado de uma observação ausente na sua análise. Por exemplo, pode fazer sentido quando uma contagem ausente significa que nenhum evento ocorreu, mas pode distorcer medições quando a ausência significa “desconhecido”. Dependendo da coluna e da análise, outra constante, um valor específico do domínio ou uma estatística, como a média ou a mediana, pode ser mais apropriado. Decida como interpretar os valores ausentes antes de preenchê-los: substituí-los elimina a distinção entre uma observação ausente e um zero real.
O valor de substituição também precisa ser compatível com os dados da coluna. O zero numérico é adequado para uma coluna numérica, enquanto preencher uma coluna de texto com zero pode alterar a forma como o pandas representa ou processa esses dados. Confira o tipo de dados resultante (dtype) se cálculos posteriores dependerem de um tipo numérico. Os exemplos preenchem somente a coluna selecionada, o que ajuda a evitar alterações em dados não relacionados enquanto você toma essa decisão.
Verificar o resultado
Inspecione a coluna desejada com df["A"] ou exiba o DataFrame para confirmar que os valores esperados foram alterados. Para contar os valores ausentes restantes nessa coluna, use df["A"].isna().sum(); uma contagem igual a zero significa que não restam valores ausentes reconhecidos pelo pandas nessa Series. Essa verificação não determina se o zero foi a escolha analítica correta; confirme também se a substituição corresponde ao significado dos seus dados. Se a contagem não for zero, confira se selecionou a coluna esperada e atribuiu a ela a Series retornada pelo método.