
W pracy z danymi w Pythonie niezwykle przydatna jest biblioteka pandas. Jednym z ciekawszych narzędzi, które oferuje, jest metoda expanding(). W tym artykule przybliżę, jak działa pandas.expanding() w języku Python i pokażę praktyczny przykład jego zastosowania.
Czym jest pandas.expanding()?
Metoda expanding() w Pandas służy do wykonywania operacji agregujących na rozszerzającym się oknie. Oznacza to, że działa ona podobnie do operacji kroczących (rolling()), ale zamiast mieć ustaloną wielkość okna, stopniowo zwiększa zakres analizy — zaczyna od pierwszego elementu i obejmuje coraz więcej wartości w miarę przetwarzania kolejnych danych.
Podstawowa składnia pandas.expanding()
Metodę tę można wywołać zarówno na obiektach Series, jak i DataFrame, jej podstawowa składnia wygląda następująco:
DataFrame.expanding(min_periods=1)
Gdzie:
min_periods– minimalna liczba obserwacji wymagana do wykonania obliczenia (domyślnie 1).
Przykład zastosowania pandas.expanding()
Na konkretnym przykładzie zobaczmy, jak działa pandas.expanding(). Załóżmy, że mamy dane dotyczące przychodów firmy w poszczególnych miesiącach i chcemy obliczyć skumulowaną średnią przychodów.
import pandas as pd
# Tworzymy przykładowe dane
data = {'Miesiąc': ['Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj'],
'Przychód': [1000, 1500, 1200, 1800, 2000]}
df = pd.DataFrame(data)
# Dodanie kolumny ze średnią kroczącą expanding
df['Średnia skumulowana'] = df['Przychód'].expanding().mean()
print(df)
Rezultat działania kodu
Uruchomienie powyższego kodu zwróci następującą tabelę:
| Miesiąc | Przychód | Średnia skumulowana |
|---|---|---|
| Styczeń | 1000 | 1000.0 |
| Luty | 1500 | 1250.0 |
| Marzec | 1200 | 1233.33 |
| Kwiecień | 1800 | 1375.0 |
| Maj | 2000 | 1500.0 |
Jak widać, średnia skumulowana stopniowo uwzględnia coraz więcej wartości, przez co daje nam lepszy obraz trendu długoterminowego.
Inne funkcje agregujące z expanding()
Metoda expanding() w Pandas pozwala wykorzystywać różne funkcje agregujące, takie jak:
.sum()– skumulowana suma wartości,.min()– najmniejsza wartość w rosnącym zakresie danych,.max()– największa wartość w rosnącym zakresie,.median()– skumulowana mediana,.std()– skumulowane odchylenie standardowe.
Przykładowo, jeśli chcemy obliczyć skumulowaną sumę przychodów:
df['Suma skumulowana'] = df['Przychód'].expanding().sum()
print(df)
Różnice między expanding() a rolling()
Na koniec warto porównać działanie expanding() i rolling().
| Cecha | expanding() | rolling() |
|---|---|---|
| Zakres danych | Rozszerza się w miarę postępu | Miejsce w czasie zależne od rozmiaru okna |
| Zakres okna | Zaczyna od pierwszego punktu i rośnie | Stale obejmuje określoną liczbę ostatnich punktów |
Podsumowując, jeśli zależy nam na długoterminowej analizie trendów, expanding() będzie lepszym wyborem, natomiast rolling() sprawdzi się, gdy zależy nam na analizie krótkoterminowych zmian w danych.
Inny ciekawy artykuł:
Jak działa pandas rolling 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.

