Como substituir todos os valores de NaN por zeros em uma coluna de dados de PandasFrame
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.
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