
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.
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.