Sostituisci tutti i valori NaN con zeri in una colonna di un DataFrame Pandas
Quando lavoriamo con set di dati di grandi dimensioni, a volte ci sono valori NaN
nel set di dati che si desidera sostituire con un valore medio o con un valore adeguato. Ad esempio, hai una lista di valutazione degli studenti e alcuni studenti non hanno tentato il quiz in modo che il sistema abbia inserito automaticamente NaN
invece di 0.0. Di seguito sono elencati i diversi modi per eseguire questa operazione.
Useremo lo stesso DataFrame
nelle prossime sezioni come segue,
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)
Quello che segue è il DataFrame con NaN
in grado.
name percentage grade
0 Oliver 90 88.0
1 Harry 99 NaN
2 George 50 95.0
3 Noah 65 NaN
Metodo df.fillna()
per sostituire tutti i valori NaN con zeri
Sostituiamo i valori NaN
con l’aiuto del metodo 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)
Quello che segue è l’output con NaN
sostituito da zero.
name percentage grade
0 Oliver 90 88.0
1 Harry 99 0.0
2 George 50 95.0
3 Noah 65 0.0
Il metodo df.fillna()
riempie i valori NaN
con il valore dato. Non cambia i dati dell’oggetto ma restituisce un nuovo DataFrame per impostazione predefinita a meno che il parametro inplace
non sia impostato su True
.
Potremmo riscrivere i codici di cui sopra con il parametro inplace
abilitato per essere 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)
Metodo df.replace()
Questo metodo funziona come df.fillna()
per sostituire NaN
con 0. df.replace()
può essere utilizzato anche per sostituire un altro numero. Diamo un’occhiata ai codici.
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)
Il seguente sarà l’output.
name percentage grade
0 Oliver 90 88.0
1 Harry 99 0.0
2 George 50 95.0
3 Noah 65 0.0