Como substituir todos os valores de NaN por zeros em uma coluna de dados de PandasFrame

  1. df.fillna() Método para substituir todos os valores de NaN por zeros
  2. df.replace() Método

Quando estamos trabalhando com grandes conjuntos de dados, às vezes há valores NaN no array de dados que você deseja substituir por algum valor médio ou por um valor adequado. Por exemplo, você tem uma lista de classificação de estudantes, e alguns estudantes não tentaram o questionário para que o sistema tenha automaticamente inserido NaN ao invés de 0,0. A seguir estão listadas as diferentes maneiras de se conseguir esta tarefa.

  1. df.fillna()
  2. df.replace()

Utilizaremos o mesmo DataFrame nas próximas seções como a seguir,

import pandas as pd
import numpy as np
data = {'name': ['Oliver', 'Harry', 'George', 'Noah'],
        'percentage': [90, 99, 50, 65],
        'grade': [88, np.nan, 95,np.nan]}
df = pd.DataFrame(data)
print(df)

A seguir está a moldura de dados com NaN em grau.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    NaN
2  George          50   95.0
3    Noah          65    NaN

df.fillna() Método para substituir todos os valores de NaN por zeros

Vamos substituir os valores NaN com a ajuda do método df.fillna().

import pandas as pd
import numpy as np
data = {'name': ['Oliver', 'Harry', 'George', 'Noah'],
        'percentage': [90, 99, 50, 65],
        'grade': [88, np.nan, 95,np.nan]}
df = pd.DataFrame(data)
df = df.fillna(0)
print(df)

O seguinte é a saída com NaN substituída por zero.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    0.0
2  George          50   95.0
3    Noah          65    0.0

O método df.fillna() preenche os valores de NaN com o valor dado. Ele não altera os dados do objeto, mas retorna um novo quadro de dados por padrão, a menos que o parâmetro inplace esteja definido para ser True.

Poderíamos reescrever os códigos acima com o parâmetro inplace habilitado para ser True.

import pandas as pd
import numpy as np
data = {'name': ['Oliver', 'Harry', 'George', 'Noah'],
        'percentage': [90, 99, 50, 65],
        'grade': [88, np.nan, 95,np.nan]}
df = pd.DataFrame(data)
df.fillna(0, inplace=True)
print(df)

df.replace() Método

Este método funciona como df.fillna() para substituir NaN por 0. df.replace() também pode ser utilizado para substituir outro número. Vamos dar uma olhada nos códigos.

    import pandas as pd
    import numpy as np
    data = {'name': ['Oliver', 'Harry', 'George', 'Noah'],
            'percentage': [90, 99, 50, 65],
            'grade': [88, np.nan, 95,np.nan]}
    df = pd.DataFrame(data)
    nan_replaced = df.replace(np.nan,0)
    print(nan_replaced)

O seguinte será a saída.

     name  percentage  grade
0  Oliver          90   88.0
1   Harry          99    0.0
2  George          50   95.0
3    Noah          65    0.0

Artigo relacionado - Pandas NaN

  • Pandas Remover Linhas com NaN