La funzione iterrows() serve a eseguire iterazioni sulle righe di un DataFrame in Pandas. Per ciascuna riga, questa funzione restituisce una tupla di Python composta dall’indice e da una serie che contiene i dati della riga in questione.

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

La sintassi di iterrows() in Pandas

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

df.iterrows()
python

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.

Somma dei valori di una colonna

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

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

Il codice precedente dà il seguente DataFrame come risultato:

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:

# 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}")
python

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

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:

# 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}")
python

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 names che hanno più di 30 anni. A tal fine utilizziamo la funzione append() di Python. Questa procedura dà il seguente risultato:

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.

Hai trovato questo articolo utile?
Vai al menu principale