Jak działa pandas iterrows w języku Python? Przykład zastosowania

Jak działa pandas iterrows w języku Python? Przykład zastosowania

Jeśli pracujesz z biblioteką Pandas w języku Python, na pewno natknąłeś się na sytuację, w której chciałeś iterować po wierszach DataFrame. Jednym z popularniejszych sposobów jest użycie metody iterrows(). W tym artykule przyjrzę się dokładnie, jak działa pandas.iterrows(), jakie ma ograniczenia i kiedy warto go używać.

Jak działa pandas iterrows w języku Python?

Metoda iterrows() zwraca obiekt generatora, który iteruje po wierszach DataFrame. Każdy zwrócony element to krotka, w której:

  • Pierwszy element to indeks wiersza.
  • Drugi element to obiekt Pandas Series zawierający dane tego wiersza.

Zobaczmy, jak to wygląda w praktyce.

Przykład zastosowania pandas.iterrows()

Załóżmy, że mamy poniższy DataFrame:

import pandas as pd

# Tworzymy przykładowy DataFrame
df = pd.DataFrame({
    "Imię": ["Alicja", "Bartek", "Cezary"],
    "Wiek": [25, 30, 35],
    "Miasto": ["Kraków", "Warszawa", "Gdańsk"]
})

print(df)

Wynikiem powyższego kodu jest:

Imię Wiek Miasto
Alicja 25 Kraków
Bartek 30 Warszawa
Cezary 35 Gdańsk

Teraz iterujemy po wierszach za pomocą iterrows():

for index, row in df.iterrows():
    print(f"Rekord {index}: {row['Imię']} ma {row['Wiek']} lat i mieszka w {row['Miasto']}.")

Rezultat:

Rekord 0: Alicja ma 25 lat i mieszka w Kraków.
Rekord 1: Bartek ma 30 lat i mieszka w Warszawa.
Rekord 2: Cezary ma 35 lat i mieszka w Gdańsk.

Ograniczenia pandas.iterrows()

Choć iterrows() jest prosty w użyciu, warto znać jego ograniczenia:

  1. Niska wydajność: Iterowanie po wierszach w Pandas jest powolne w porównaniu do wektorowych operacji, które są znacznie bardziej optymalne.
  2. Zmiana typów danych: Każdy wiersz jest zwracany jako Series, co oznacza, że typy danych mogą się zmienić (np. liczby całkowite mogą być konwertowane na liczby zmiennoprzecinkowe).
  3. Nie zalecane dla dużych zbiorów danych: Jeśli Twój DataFrame zawiera dziesiątki tysięcy wierszy, iterrows() może znacznie spowolnić wykonanie programu.

Alternatywy dla iterrows()

Jeśli chcesz przechodzić po wierszach bardziej efektywnie, oto alternatywne metody:

1. Użycie itertuples()

Metoda itertuples() zwraca wiersze w postaci nazwanego krotki zamiast Series, co jest często szybsze.

for row in df.itertuples():
    print(f"{row.Imię} mieszka w {row.Miasto} i ma {row.Wiek} lat.")

2. Wykorzystanie metod wektorowych

Jeśli operacje można wykonać na całej kolumnie, warto użyć metod wektorowych zamiast iterrows():

df["Opis"] = df.apply(lambda x: f"{x['Imię']} ma {x['Wiek']} lat", axis=1)
print(df)

Kiedy używać pandas.iterrows()?

Nie zawsze iterrows() jest złym wyborem. Warto go użyć, gdy:

  • Iterujemy po niewielkiej ilości danych.
  • Musimy wykonywać operacje na poziomie pojedynczego wiersza.
  • Nie mamy możliwości zastosowania wektorowych operacji Pandas.

Podsumowanie

Metoda pandas.iterrows() pozwala na łatwą iterację po wierszach DataFrame w języku Python. Jednak ze względu na niską wydajność warto rozważyć alternatywy takie jak itertuples() lub metody wektorowe. Jeśli musisz iterować po DataFrame, zawsze zastanów się, czy da się to zrobić bardziej optymalnie.

 

Inny ciekawy artykuł:

Jak działa pandas sample w języku Python? Przykład zastosowania

KajoDataSpace