# Pulizia dei dati con dropna() in Pandas

La funzione `DataFrame.dropna()` di [Pandas per Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/pandas-di-python/) serve a rimuovere da un DataFrame tutte le righe o le colonne che contengono dati mancanti (NaN). Questa funzione ha quindi un ruolo fondamentale in particolare nella **preparazione e pulizia dei dati**.

## La sintassi di `dropna()` in Pandas

La funzione `dropna()` accetta **fino a cinque parametri**. La sintassi di base è particolarmente semplice:

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

### Parametri applicabili

Il comportamento della funzione `DataFrame.dropna()` di Pandas può essere **modificato dai parametri** assegnati. La tabella seguente contiene un riepilogo dei parametri più importanti:

<table>
  <thead>
    <tr>
      <th><strong>Parametro</strong></th>
      <th><strong>Descrizione</strong></th>
      <th><strong>Valore predefinito</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>`axis`</td>
      <td>Determina se rimuovere le righe (0 o `index`) o le colonne (1 o `columns`)</td>
      <td>0</td>
    </tr>
    <tr>
      <td>`how`</td>
      <td>Specifica se tutti (`all`) o solo alcuni valori (`any`) devono essere NaN</td>
      <td>`any`</td>
    </tr>
    <tr>
      <td>`tresh`</td>
      <td>Stabilisce il numero minimo di valori non NaN che una riga o una colonna deve avere per non essere rimossa; non combinabile con `how`</td>
      <td>opzionale</td>
    </tr>
    <tr>
      <td>`subset`</td>
      <td>Determina le righe o colonne da prendere in considerazione</td>
      <td>opzionale</td>
    </tr>
    <tr>
      <td>`inplace`</td>
      <td>Stabilisce se l’operazione viene eseguita nel DataFrame originale</td>
      <td>`False`</td>
    </tr>
    <tr>
      <td>`ignore_index`</td>
      <td>Se `True`, gli assi restanti vengono etichettati da 0 a n-1</td>
      <td>`False`</td>
    </tr>
  </tbody>
</table>

## Applicazione di `DataFrame.dropna()` in Pandas

La funzione `dropna()` di Pandas è necessaria per pulire i dati prima dell’analisi, rimuovendo le righe o le colonne con valori mancanti. Questo approccio contribuisce a **evitare distorsioni** nelle valutazioni statistiche. Inoltre, in questo modo si **semplifica la creazione di diagrammi** e report, poiché in alcuni casi i valori mancanti possono portare a rappresentazioni errate.

### Rimozione di righe con valori mancanti

Nell’esempio di codice seguente prendiamo in considerazione un DataFrame che contiene valori NaN:

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

Il DataFrame si presenta così:

```none
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 successivo applichiamo la funzione `dropna()` di Pandas:

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

L’esecuzione del codice dà il seguente risultato:

```none
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 contenevano 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:

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

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

```none
C
0   9
1   10
2   11
3   12
```

### Applicazione di `thresh`

Se desideri rimuovere solo le righe che hanno meno di due valori non NaN, puoi utilizzare il parametro `thresh`:

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

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

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

### Applicazione di `subset`

Il parametro `subset` viene utilizzato per indicare le colonne specifiche in cui cercare i valori mancanti. Vengono rimosse solo le righe che presentano valori mancanti nelle colonne specificate.

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

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 considerazione:

```none
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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/dataframe-in-pandas-per-python/) e [DataFrame.any() in Pandas per Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/dataframe-any-di-pandas-in-python/).


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/dataframe-dropna-in-pandas-per-python/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/dataframe-dropna-in-pandas-per-python/) for AI/LLM consumption.