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)
python

Parametri 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
N.B.

Nelle versioni future, il parametro methodprobabilmente 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)
python

Il 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
N.B.

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)
python

Nel 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)
python

In 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)
python

Nel 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
Il tuo web hosting come mai prima d'ora
  • Certificato SSL e protezione DDoS
  • Velocità, flessibilità e scalabilità
  • Dominio e consulente personale
  • 1 anno gratis del gestionale di fatturazione elettronica FlexTax
Hai trovato questo articolo utile?
Vai al menu principale