
Jak działa pandas.itertuples w języku Python? Przykład zastosowania
Jeśli pracujesz z biblioteką pandas w języku Python, istnieje duża szansa, że spotkałeś się z koniecznością iteracji po wierszach DataFrame. Jednym z efektywnych sposobów na osiągnięcie tego celu jest stosowanie metody itertuples(). W tym artykule dokładnie wyjaśnię, jak działa ta metoda, dlaczego warto jej używać oraz przedstawię przykłady zastosowań.
Co to jest itertuples()?
Metoda itertuples() w bibliotece pandas służy do iterowania po wierszach obiektu DataFrame. Zwraca ona każdy wiersz jako namedtuple, co czyni ją szybszą i bardziej wydajną w porównaniu do iterrows(). Namedtuple to specjalny typ krotki, który pozwala na dostęp do wartości zarówno przez indeks, jak i przez nazwę kolumny.
Podstawowy przykład
Zanim przejdziemy do bardziej zaawansowanych zastosowań, zobaczmy, jak w praktyce działa itertuples().
import pandas as pd
# Tworzymy przykładowy DataFrame
df = pd.DataFrame({
'imie': ['Anna', 'Piotr', 'Kasia'],
'wiek': [25, 30, 22],
'miasto': ['Warszawa', 'Kraków', 'Gdańsk']
})
# Iterowanie po wierszach za pomocą itertuples()
for row in df.itertuples():
print(f'Imię: {row.imie}, Wiek: {row.wiek}, Miasto: {row.miasto}')
Zalety itertuples() w porównaniu do iterrows()
Istnieje kilka powodów, dla których warto stosować itertuples() zamiast iterrows():
- Wydajność –
itertuples()jest szybsze, ponieważ zwraca namedtuple zamiast seriipandas.Series. - Zużycie pamięci – W porównaniu do
iterrows()metoda zajmuje mniej pamięci. - Łatwy dostęp do danych – Dzięki nazwanym krotkom, kolumny można odczytywać w bardziej przejrzysty sposób.
Dla porównania, tak wygląda iteracja z użyciem iterrows():
for index, row in df.iterrows():
print(f'Imię: {row["imie"]}, Wiek: {row["wiek"]}, Miasto: {row["miasto"]}')
Jak widać, dostęp do wartości kolumn trzeba uzyskać przez indeksowanie jak w słowniku, czego nie ma w przypadku itertuples().
Optymalizacja i kluczowa różnica
W praktyce itertuples() działa dużo szybciej, zwłaszcza gdy mamy do czynienia z dużymi zbiorami danych. Poniższa tabela przedstawia porównanie wydajności dwóch metod dla różnych rozmiarów DataFrame.
| Liczba wierszy w DataFrame | Czas dla iterrows() (s) |
Czas dla itertuples() (s) |
|---|---|---|
| 1 000 | 0.023 | 0.008 |
| 10 000 | 0.120 | 0.035 |
| 100 000 | 1.245 | 0.280 |
Jak widać, itertuples() działa nawet kilka razy szybciej, co przy dużych zbiorach danych może mieć kluczowe znaczenie.
Praktyczne zastosowania itertuples()
Niekiedy musimy przeiterować po wierszach DataFrame i na ich podstawie wykonać określone operacje. Przykładowo, możemy chcieć sprawdzić, którzy użytkownicy mają więcej niż 25 lat i dodać ich do nowej listy.
młodzi_uzytkownicy = []
for row in df.itertuples():
if row.wiek > 25:
młodzi_uzytkownicy.append(row.imie)
print(młodzi_uzytkownicy)
Innym przykładem może być aktualizacja bazy danych na podstawie iteracji po rekordach:
import sqlite3
conn = sqlite3.connect('uzytkownicy.db')
cursor = conn.cursor()
for row in df.itertuples():
cursor.execute("INSERT INTO users (name, age, city) VALUES (?, ?, ?)", (row.imie, row.wiek, row.miasto))
conn.commit()
conn.close()
Podsumowanie
Metoda itertuples() w bibliotece pandas to szybki i efektywny sposób na iterację po wierszach DataFrame. Jest znacznie wydajniejsza niż iterrows() i doskonale nadaje się do dużych zbiorów danych. Warto mieć ją na uwadze, gdy potrzebujemy przejść po rekordach ramki danych w Pythonie.
Inny ciekawy artykuł:
Jak działa pandas iterrows 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, PowerBI, Tableau i Pythona z certyfikatami!
🟨 Ekskluzywana ale pomagająca sobie społeczność.
🟩 Ponad 75 godzin materiałów video.
🟨 Spotkania LIVE co miesiąc.
🟩 Mój osobisty mentoring.

