La funzione DataFrame.dropna() di Pandas per Python serve a rimuovere da un DataFrame tutte le righe o le colonne che con­ten­go­no dati mancanti (NaN). Questa funzione ha quindi un ruolo fon­da­men­ta­le in par­ti­co­la­re nella pre­pa­ra­zio­ne e pulizia dei dati.

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

La sintassi di dropna() in Pandas

La funzione dropna() accetta fino a cinque parametri. La sintassi di base è par­ti­co­lar­men­te semplice:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False, ignore_index=False)
python

Parametri ap­pli­ca­bi­li

Il com­por­ta­men­to della funzione DataFrame.dropna() di Pandas può essere mo­di­fi­ca­to dai parametri assegnati. La tabella seguente contiene un riepilogo dei parametri più im­por­tan­ti:

Parametro De­scri­zio­ne Valore pre­de­fi­ni­to
axis Determina se rimuovere le righe (0 o index) o le colonne (1 o columns) 0
how Specifica se tutti (all) o solo alcuni valori (any) devono essere NaN any
tresh Sta­bi­li­sce il numero minimo di valori non NaN che una riga o una colonna deve avere per non essere rimossa; non com­bi­na­bi­le con how opzionale
subset Determina le righe o colonne da prendere in con­si­de­ra­zio­ne opzionale
inplace Sta­bi­li­sce se l’ope­ra­zio­ne viene eseguita nel DataFrame originale False
ignore_index Se True, gli assi restanti vengono eti­chet­ta­ti da 0 a n-1 False

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

La funzione dropna() di Pandas è ne­ces­sa­ria per pulire i dati prima dell’analisi, ri­muo­ven­do le righe o le colonne con valori mancanti. Questo approccio con­tri­bui­sce a evitare di­stor­sio­ni nelle va­lu­ta­zio­ni sta­ti­sti­che. Inoltre, in questo modo si sem­pli­fi­ca la creazione di diagrammi e report, poiché in alcuni casi i valori mancanti possono portare a rap­pre­sen­ta­zio­ni errate.

Rimozione di righe con valori mancanti

Nell’esempio di codice seguente prendiamo in con­si­de­ra­zio­ne un DataFrame che contiene valori NaN:

import pandas as pd
import numpy as np
# Creazione di un DataFrame con dati di esempio
data = {
    'A': [1, 2, np.nan, 4],
    'B': [5, np.nan, np.nan, 8],
    'C': [9, 10, 11, 12]
}
df = pd.DataFrame(data)
print(df)
python

Il DataFrame si presenta così:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
2  NaN  NaN  11
3  4.0  8.0  12

Nel passaggio suc­ces­si­vo ap­pli­chia­mo la funzione dropna() di Pandas:

## Rimozione di tutte le righe che contengono almeno un valore NaN
df_cleaned = df.dropna()
print(df_cleaned)
python

L’ese­cu­zio­ne del codice dà il seguente risultato:

A    B  C
0  1.0  5.0  9
3  4.0  8.0 12

Rimangono quindi solo la riga zero e la terza riga del DataFrame, perché tutte le altre righe con­te­ne­va­no valori NaN.

Rimozione di colonne con valori mancanti

La rimozione di colonne con valori mancanti funziona allo stesso modo. Non devi far altro che impostare su 1 il parametro axis della funzione:

## Rimozione di tutte le colonne che contengono almeno un valore NaN
df_cleaned_columns = df.dropna(axis=1)
print(df_cleaned_columns)
python

Il risultato mostra che è presente solo la colonna “C”, poiché è l’unica che non contiene un valore NaN:

C
0   9
1   10
2   11
3   12

Ap­pli­ca­zio­ne di thresh

Se desideri rimuovere solo le righe che hanno meno di due valori non NaN, puoi uti­liz­za­re il parametro thresh:

## Rimozione di tutte le righe con meno di due valori non NaN
df_thresh = df.dropna(thresh=2)
print(df_thresh)
python

Dopo aver eseguito il codice, questa volta viene mantenuta anche la prima riga perché contiene due valori non NaN:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12

Ap­pli­ca­zio­ne di subset

Il parametro subset viene uti­liz­za­to per indicare le colonne spe­ci­fi­che in cui cercare i valori mancanti. Vengono rimosse solo le righe che pre­sen­ta­no valori mancanti nelle colonne spe­ci­fi­ca­te.

## Rimozione di tutte le righe che contengono un valore NaN nella colonna "A":
df_subset = df.dropna(subset=['A'])
print(df_subset)
python

Come puoi notare, è stata rimossa solo la seconda riga. Il valore NaN nella prima riga viene ignorato sulla base del parametro impostato perché la colonna “B” non è stata presa in con­si­de­ra­zio­ne:

A    B   C
0  1.0  5.0   9
1  2.0  NaN  10
3  4.0  8.0  12
Consiglio

Nella nostra Digital Guide trovi tanti altri articoli dedicati a Pandas come DataFrame in Pandas per Python e DataFrame.any() in Pandas per Python.

Vai al menu prin­ci­pa­le