Scorri le righe di un DataFrame in Pandas

Suraj Joshi 30 gennaio 2023
  1. Attributo index per scorrere le righe in Pandas DataFrame
  2. Metodo loc[] per scorrere le righe di DataFrame in Python
  3. Metodo iloc[] per scorrere le righe di DataFrame in Python
  4. pandas.DataFrame.iterrows() per ripetere i pandas su righe
  5. pandas.DataFrame.itertuples per ripetere le righe sui pandas
  6. pandas.DataFrame.apply per ripetere i pandas su righe
Scorri le righe di un DataFrame in Pandas

Possiamo scorrere le righe di un Pandas DataFrame usando l’attributo index del DataFrame. Possiamo anche iterare attraverso righe di DataFrame Pandas usando i metodi loc(), iloc(), iterrows(), itertuples(), iteritems() e apply() degli oggetti DataFrame.

Useremo il seguente dataframe come esempio nelle sezioni seguenti.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
income1 = [10, 20, 10, 15, 10, 12]
income2 = [20, 30, 10, 5, 40, 13]

df = pd.DataFrame({"Date": dates, "Income_1": income1, "Income_2": income2})

print(df)

Produzione:

       Date  Income_1  Income_2
0  April-10        10        20
1  April-11        20        30
2  April-12        10        10
3  April-13        15         5
4  April-14        10        40
5  April-16        12        13

Attributo index per scorrere le righe in Pandas DataFrame

L’attributo index di Pandas DataFrame fornisce un oggetto intervallo dalla riga superiore alla riga inferiore di un DataFrame. Possiamo usare l’intervallo per iterare su righe in Pandas.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
income1 = [10, 20, 10, 15, 10, 12]
income2 = [20, 30, 10, 5, 40, 13]

df = pd.DataFrame({"Date": dates, "Income_1": income1, "Income_2": income2})

for i in df.index:
    print(
        "Total income in "
        + df["Date"][i]
        + " is:"
        + str(df["Income_1"][i] + df["Income_2"][i])
    )

Produzione:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

Aggiunge Income_1 e Income_2 di ogni riga e stampa il reddito totale.

Metodo loc[] per scorrere le righe di DataFrame in Python

Il metodo loc[] viene utilizzato per accedere a una riga alla volta. Quando usiamo il metodo loc[] all’interno del bucle attraverso DataFrame, possiamo iterare attraverso le righe di DataFrame.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
income1 = [10, 20, 10, 15, 10, 12]
income2 = [20, 30, 10, 5, 40, 13]

df = pd.DataFrame({"Date": dates, "Income_1": income1, "Income_2": income2})

for i in range(len(df)):
    print(
        "Total income in "
        + df.loc[i, "Date"]
        + " is:"
        + str(df.loc[i, "Income_1"] + df.loc[i, "Income_2"])
    )

Produzione:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

Qui, range(len(df)) genera un oggetto intervallo per eseguire il bucle su intere righe nel DataFrame.

Metodo iloc[] per scorrere le righe di DataFrame in Python

Anche l’attributo iloc di Pandas DataFrame è molto simile all’attributo loc. L’unica differenza tra loc e iloc è che in loc dobbiamo specificare il nome della riga o della colonna a cui accedere mentre in iloc specifichiamo l’indice della riga o della colonna a cui accedere.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
income1 = [10, 20, 10, 15, 10, 12]
income2 = [20, 30, 10, 5, 40, 13]

df = pd.DataFrame({"Date": dates, "Income_1": income1, "Income_2": income2})

for i in range(len(df)):
    print(
        "Total income in " + df.iloc[i, 0] + " is:" + str(df.iloc[i, 1] + df.iloc[i, 2])
    )

Produzione:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

Qui l’indice 0 rappresenta la prima colonna di DataFrame cioè Date, l’indice 1 rappresenta la colonna Income_1 e l’indice 2 rappresenta la colonna Income_2.

pandas.DataFrame.iterrows() per ripetere i pandas su righe

pandas.DataFrame.iterrows() restituisce l’indice della riga e tutti i dati della riga come una Series. Quindi, potremmo usare questa funzione per iterare su righe in Pandas DataFrame.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
income1 = [10, 20, 10, 15, 10, 12]
income2 = [20, 30, 10, 5, 40, 13]

df = pd.DataFrame({"Date": dates, "Income_1": income1, "Income_2": income2})


for index, row in df.iterrows():
    print(
        "Total income in "
        + row["Date"]
        + " is:"
        + str(row["Income_1"] + row["Income_2"])
    )

Produzione:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

pandas.DataFrame.itertuples per ripetere le righe sui pandas

pandas.DataFrame.itertuples restituisce un oggetto da iterare su tuple per ogni riga con il primo campo come indice e i campi rimanenti come valori di colonna. Quindi, potremmo anche usare questa funzione per iterare su righe in Pandas DataFrame.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
income1 = [10, 20, 10, 15, 10, 12]
income2 = [20, 30, 10, 5, 40, 13]

df = pd.DataFrame({"Date": dates, "Income_1": income1, "Income_2": income2})


for row in df.itertuples():
    print("Total income in " + row.Date + " is:" + str(row.Income_1 + row.Income_2))

Produzione:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

pandas.DataFrame.apply per ripetere i pandas su righe

pandas.DataFrame.apply restituisce un DataFrame
come risultato dell’applicazione della funzione data lungo l’asse specificato del DataFrame.

Sintassi:

DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds)

Dove, func rappresenta la funzione da applicare e axis rappresenta l’asse lungo il quale viene applicata la funzione. Possiamo usare axis=1 o axis = 'columns' per applicare la funzione a ciascuna riga.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
income1 = [10, 20, 10, 15, 10, 12]
income2 = [20, 30, 10, 5, 40, 13]

df = pd.DataFrame({"Date": dates, "Income_1": income1, "Income_2": income2})


print(
    df.apply(
        lambda row: "Total income in "
        + row["Date"]
        + " is:"
        + str(row["Income_1"] + row["Income_2"]),
        axis=1,
    )
)

Produzione:

0    Total income in April-10 is:30
1    Total income in April-11 is:50
2    Total income in April-12 is:20
3    Total income in April-13 is:20
4    Total income in April-14 is:50
5    Total income in April-16 is:25
dtype: object

Qui, la parola chiave lambda viene utilizzata per definire una funzione inline che viene applicata a ciascuna riga.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Articolo correlato - Pandas DataFrame

Articolo correlato - Pandas DataFrame Row