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

Jak działa pandas expanding w języku Python? Przykład zastosowania
„`html

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
KajoDataSpace