
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:
- Niska wydajność: Iterowanie po wierszach w Pandas jest powolne w porównaniu do wektorowych operacji, które są znacznie bardziej optymalne.
- 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). - 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
Opanuj analizę danych w Pythonie z moim kursem!
Opanujesz podstawy programowania w Pythonie, w tym typy danych, zmienne, listy, słowniki, funkcje oraz obsługę błędów. Nauczysz się korzystać z biblioteki pandas do zaawansowanej analizy danych i pracy z różnymi rodzajami danych. Zrozumiesz proces analizy, eksploracji (EDA) i wizualizacji. Tworzenie własnych funkcji przygotuje Cię do rozmów kwalifikacyjnych i rozwiązywania rzeczywistych problemów biznesowych.
Zostań analitykiem danych – dołącz do KajoDataSpace!
Najlepsza ścieżka do zawodu analityka danych. Dostęp do pełnych wersji kursów online z Excela, SQLa, Tableau i Pythona z certyfikatami + specjalistycznych webinarów z PowerBI.
Ekskluzywana ale pomagająca sobie społeczność.
Ponad 61 godzin materiałów video.
Spotkania LIVE co miesiąc.
Mój osobisty mentoring.