La funzione iterrows() serve a eseguire ite­ra­zio­ni sulle righe di un DataFrame in Pandas. Per ciascuna riga, questa funzione re­sti­tui­sce una tupla di Python composta dall’indice e da una serie che contiene i dati della riga in questione.

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 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 pre­ce­den­te, df indica il DataFrame su cui eseguire l’ite­ra­zio­ne.

Utilizzo della funzione iterrows() in Pandas

Di solito la funzione DataFrame.iterrows() è uti­liz­za­ta quando è ne­ces­sa­rio elaborare i dati riga per riga. Per questo motivo si trova spesso in com­bi­na­zio­ne 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 pre­ce­den­te 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 uti­liz­za­re 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 uti­liz­za­ta per eseguire ite­ra­zio­ni sulle righe e sommare i valori nella colonna “Punteggio” pro­gres­si­va­men­te. Il risultato si presenta così:

Il totale dei punteggi è: 265
N.B.

Lavorando con iterrows() in Pandas è ne­ces­sa­rio fare at­ten­zio­ne a non mo­di­fi­ca­re mai di­ret­ta­men­te i dati su cui si esegue l’ite­ra­zio­ne. A seconda del tipo di dati, ciò potrebbe non portare al risultato de­si­de­ra­to e potrebbe causare un com­por­ta­men­to im­pre­vi­sto.

Modifica con­di­zio­na­le della riga

È possibile uti­liz­za­re la funzione iterrows() anche per applicare con­di­zio­ni 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à co­no­scia­mo:

# 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 uti­liz­zia­mo DataFrame.iterrows() di Pandas per eseguire un’ite­ra­zio­ne sulle righe del record di dati. All’interno del ciclo for vengono presi in con­si­de­ra­zio­ne i valori della colonna “Età” per me­mo­riz­za­re soltanto i nomi delle persone nella lista di Python names che hanno più di 30 anni. A tal fine uti­liz­zia­mo 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 uti­liz­za­ta con cautela per il fatto che potrebbe essere meno ef­fi­cien­te con i DataFrame più estesi. In molti casi sono di­spo­ni­bi­li al­ter­na­ti­ve più per­for­man­ti, come apply() o il calcolo vet­to­ria­le con Pandas.

Vai al menu prin­ci­pa­le