La funzione DataFrame.fillna() di Pandas per Python è uti­liz­za­ta per so­sti­tui­re i valori mancanti in un DataFrame. In molti casi questa ope­ra­zio­ne è utile per fa­ci­li­ta­re i processi di pulizia dei dati o per l’ese­cu­zio­ne 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 ap­pli­ca­bi­li

È possibile per­so­na­liz­za­re il com­por­ta­men­to di DataFrame.fillna() in Pandas grazie a diversi parametri:

Parametro De­scri­zio­ne Valore pre­de­fi­ni­to
value Un valore scalato o un di­zio­na­rio oppure una serie per la so­sti­tu­zio­ne dei NaN None
method Indica il metodo per il riem­pi­men­to; riem­pi­men­to in avanti (ffill) o riem­pi­men­to all’indietro (bfill) None
axis Determina l’asse lungo il quale eseguire l’ope­ra­zio­ne (0 oppure index per le righe, 1 oppure columns per le colonne) 0
inplace Se True, le modifiche vengono apportate di­ret­ta­men­te nel DataFrame originale False
limit Intero che limita il numero di valori NaN da so­sti­tui­re None
N.B.

Nelle versioni future, il parametro methodpro­ba­bil­men­te non sarà più sup­por­ta­to. I pro­gram­ma­to­ri e le pro­gram­ma­tri­ci possono quindi ricorrere a obj.ffill() o obj.bfill(). Le due funzioni hanno lo stesso effetto del cor­ri­spon­den­te parametro method.

Ap­pli­ca­zio­ne di DataFrame.fillna() in Pandas

È possibile uti­liz­za­re la funzione fillna() di Pandas in diversi modi:

So­sti­tu­zio­ne 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 in­ter­pre­ta­to come NaN.

Ora, per so­sti­tui­re i valori mancanti con il valore 0 puoi uti­liz­za­re 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 so­sti­tui­to 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 riem­pi­men­to in avanti ffill

Se i valori NaN devono essere riempiti con i valori pre­ce­den­ti della ri­spet­ti­va colonna, è possibile uti­liz­za­re 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 so­sti­tui­ti con i valori pre­ce­den­ti nella stessa colonna. Poiché nella colonna “B” non era presente alcun valore pre­ce­den­te, 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 riem­pi­men­to all’indietro bfill

I valori NaN possono essere riempiti anche con i valori suc­ces­si­vi della ri­spet­ti­va riga. A tal fine occorre uti­liz­za­re 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 so­sti­tui­ti dai ri­spet­ti­vi valori suc­ces­si­vi. Nella prima colonna rimane ancora un valore NaN, poiché in questa riga non è presente alcun valore suc­ces­si­vo cor­ri­spon­den­te:

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
Web Hosting
Diventa il n°1 della rete con il provider di hosting n°1 in Europa
  • Di­spo­ni­bi­li­tà garantita al 99,99%
  • Dominio, SSL ed e-mail inclusi
  • As­si­sten­za 24/7 in lingua italiana
Vai al menu prin­ci­pa­le