Comment remplacer toutes les valeurs NaN par des zéros dans une colonne d'un pandas DataFrame
Lorsque nous travaillons avec de grands ensembles de données, il y a parfois des valeurs NaN
dans l’ensemble de données que vous souhaitez remplacer par une valeur moyenne ou par une valeur appropriée. Par exemple, vous avez une liste de classement des étudiants, et certains étudiants n’ont pas tenté le test de sorte que le système a automatiquement entré NaN
au lieu de 0.0. Voici les différentes façons d’accomplir cette tâche.
Nous utiliserons le même DataFrame
dans les sections suivantes comme suit,
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)
Ce qui suit est le DataFrame avec NaN
en grade.
name percentage grade
0 Oliver 90 88.0
1 Harry 99 NaN
2 George 50 95.0
3 Noah 65 NaN
Méthode df.fillna()
pour remplacer toutes les valeurs NaN par des zéros
Remplaçons les valeurs NaN
à l’aide de la méthode 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)
Ce qui suit est la sortie avec NaN
remplacée par zéro.
name percentage grade
0 Oliver 90 88.0
1 Harry 99 0.0
2 George 50 95.0
3 Noah 65 0.0
La méthode df.fillna()
remplit les valeurs de NaN
avec la valeur donnée. Il ne modifie pas les données d’objet mais retourne une nouvelle DataFrame par défaut à moins que le paramètre inplace
ne soit défini sur True
.
Nous pourrions réécrire les codes ci-dessus avec le paramètre inplace
activé pour être 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)
Méthode df.replace()
Cette méthode fonctionne de la même manière que df.fillna()
pour remplacer NaN
par 0. df.replace()
peut également être utilisé pour remplacer un autre nombre. Jetons un coup d’œil aux codes.
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)
Ce qui suit sera la sortie.
name percentage grade
0 Oliver 90 88.0
1 Harry 99 0.0
2 George 50 95.0
3 Noah 65 0.0