Baza wiedzy / Python
Jak działa pandas expanding w języku Python? Przykład zastosowania

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.
