# La funzione iterrows() in Pandas: come eseguire l’iterazione sui DataFrame

La funzione `iterrows()` serve a **eseguire iterazioni sulle righe di un [DataFrame in Pandas](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/dataframe-in-pandas-per-python/)**. Per ciascuna riga, questa funzione restituisce una [tupla di Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/tuple-in-python/) composta dall’indice e da una serie che contiene i dati della riga in questione.

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

La sintassi di base di `DataFrame.iterrows()` in Pandas è semplice, in quanto questa funzione **non richiede alcun parametro**:

```python
df.iterrows()
```

Nell’esempio di codice precedente, `df` indica il DataFrame su cui eseguire l’iterazione.

## Utilizzo della funzione `iterrows()` in Pandas

Di solito la funzione `DataFrame.iterrows()` è utilizzata quando **è necessario elaborare i dati riga per riga**. Per questo motivo si trova spesso in combinazione con i [cicli for su Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/ciclo-for-su-python/).

### Somma dei valori di una colonna

Qui di seguito facciamo ricorso a un DataFrame con le colonne “Nome”, “Età” e “Punteggio”:

```python
import pandas as pd
# Creazione di un DataFrame di esempio
data = {'Nome': ['Anna', 'Bruno', 'Clara'],
    'Età': [23, 35, 29],
    'Punteggio': [88, 92, 85]}
df = pd.DataFrame(data)
print(df)
```

Il codice precedente dà il seguente DataFrame come risultato:

```none
Nome    Età     Punteggio
0   Anna     23         88
1   Bruno    35         92
2   Clara    29         85
```

Quindi passiamo a calcolare i punteggi. A tal fine è possibile utilizzare `DataFrame.iterrows()` in Pandas:

```python
# Calcolo del totale dei punteggi
total_score = 0
for index, row in df.iterrows():
    total_score += row['Punteggio']
print(f"Il totale dei punteggi è: {total_score}")
```

In questo esempio la funzione `iterrows()` di Pandas viene utilizzata per eseguire iterazioni sulle righe e sommare i valori nella colonna “Punteggio” progressivamente. Il risultato si presenta così:

```none
Il totale dei punteggi è: 265
```

N.B. Lavorando con `iterrows()` in Pandas è necessario fare attenzione a **non modificare mai direttamente** i dati su cui si esegue l’iterazione. A seconda del tipo di dati, ciò potrebbe non portare al risultato desiderato e potrebbe causare un comportamento imprevisto.

### Modifica condizionale della riga

È possibile utilizzare la funzione `iterrows()` anche per applicare condizioni a singole righe del DataFrame. Immagina di voler ottenere i nomi di tutte le persone che hanno più di 30 anni e che si trovano nel DataFrame che già conosciamo:

```python
# Richiama i nomi delle persone che hanno più di 30 anni
names = []
for index, row in df.iterrows():
    if row['Età'] > 30:
        names.append(row['Nome'])
print(f"Persone con più di 30 anni: {names}")
```

Nel codice di esempio utilizziamo `DataFrame.iterrows()` di Pandas per eseguire un’iterazione sulle righe del record di dati. All’interno del ciclo for vengono presi in considerazione i valori della colonna “Età” per memorizzare soltanto i nomi delle persone nella [lista di Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/liste-in-python/) `names` che hanno più di 30 anni. A tal fine utilizziamo la [funzione `append()` di Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/python-append/). Questa procedura dà il seguente risultato:

```none
Persone con più di 30 anni: ['Bruno']
```

N.B. La funzione `DataFrames.iterrows()` di Pandas è facile da usare, ma deve essere utilizzata con cautela per il fatto che **potrebbe essere meno efficiente con i DataFrame più estesi**. In molti casi sono disponibili alternative più performanti, come `apply()` o il calcolo vettoriale con Pandas.


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