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