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