La funzione fillna() di Pandas per la sostituzione dei valori NaN
La funzione DataFrame.fillna()
di Pandas per Python è utilizzata per sostituire i valori mancanti in un DataFrame. In molti casi questa operazione è utile per facilitare i processi di pulizia dei dati o per l’esecuzione di analisi.
La sintassi di fillna()
in Pandas
La funzione fillna()
accetta fino a cinque parametri e la struttura della sua sintassi è la seguente:
DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)
pythonParametri applicabili
È possibile personalizzare il comportamento di DataFrame.fillna()
in Pandas grazie a diversi parametri:
Parametro | Descrizione | Valore predefinito |
---|---|---|
value
|
Un valore scalato o un dizionario oppure una serie per la sostituzione dei NaN | None
|
method
|
Indica il metodo per il riempimento; riempimento in avanti (ffill ) o riempimento all’indietro (bfill )
|
None
|
axis
|
Determina l’asse lungo il quale eseguire l’operazione (0 oppure index per le righe, 1 oppure columns per le colonne)
|
0 |
inplace
|
Se True , le modifiche vengono apportate direttamente nel DataFrame originale
|
False
|
limit
|
Intero che limita il numero di valori NaN da sostituire | None
|
Nelle versioni future, il parametro method
probabilmente non sarà più supportato. I programmatori e le programmatrici possono quindi ricorrere a obj.ffill()
o obj.bfill()
. Le due funzioni hanno lo stesso effetto del corrispondente parametro method
.
Applicazione di DataFrame.fillna()
in Pandas
È possibile utilizzare la funzione fillna()
di Pandas in diversi modi:
Sostituzione di valori NaN con un valore fisso
Per iniziare, definiamo un DataFrame:
import pandas as pd
# Esempio di DataFrame con diversi valori
data = {
'A': [1, 2, None, 4],
'B': [None, 2, 3, 4],
'C': [1, None, 3, 4]
}
df = pd.DataFrame(data)
print(df)
pythonIl DataFrame appena definito si presenta così:
A B C
0 1.0 NaN 1.0
1 2.0 2.0 NaN
2 NaN 3.0 3.0
3 4.0 4.0 4.0
Ricorda che in Pandas per Python il valore None
nei DataFrame e nelle serie viene interpretato come NaN
.
Ora, per sostituire i valori mancanti con il valore 0 puoi utilizzare la funzione fillna()
di Pandas:
# Sostituzione dei valori mancanti con il valore 0
df_filled = df.fillna(0)
print(df_filled)
pythonNel risultato, ciascun NaN è stato sostituito con il valore 0 assegnato alla funzione:
A B C
0 1.0 0.0 1.0
1 2.0 2.0 0.0
2 0.0 3.0 3.0
3 4.0 4.0 4.0
Utilizzo del metodo di riempimento in avanti ffill
Se i valori NaN devono essere riempiti con i valori precedenti della rispettiva colonna, è possibile utilizzare il metodo ffill
, che viene assegnato come parametro alla funzione:
# Sostituzione di tutti i valori NaN con il valore precedente
df_ffill = df.fillna(method='ffill')
print(df_ffill)
pythonIn questo esempio, i valori NaN nelle colonne “A” e “C” sono stati sostituiti con i valori precedenti nella stessa colonna. Poiché nella colonna “B” non era presente alcun valore precedente, il valore NaN viene mantenuto:
A B C
0 1.0 NaN 1.0
1 2.0 2.0 1.0
2 2.0 3.0 3.0
3 4.0 4.0 4.0
Utilizzo riga per riga del metodo di riempimento all’indietro bfill
I valori NaN possono essere riempiti anche con i valori successivi della rispettiva riga. A tal fine occorre utilizzare non soltanto il metodo bfill
, ma bisogna anche impostare il parametro axis
su 1:
df_bfill = df.fillna(method='bfill', axis=1)
print(df_bfill)
pythonNel risultato, i valori NaN della riga zero e della seconda riga sono stati sostituiti dai rispettivi valori successivi. Nella prima colonna rimane ancora un valore NaN, poiché in questa riga non è presente alcun valore successivo corrispondente:
A B C
0 1.0 1.0 1.0
1 2.0 2.0 NaN
2 3.0 3.0 3.0
3 4.0 4.0 4.0
- Certificato SSL e protezione DDoS
- Velocità, flessibilità e scalabilità
- Dominio e consulente personale
- 1 anno gratis del gestionale di fatturazione elettronica FlexTax