
W pracy z danymi często spotykam się z koniecznością obliczania średnich kroczących, sum czy wariancji w określonych oknach czasowych lub na określonych grupach danych. Właśnie do takich operacji świetnie nadaje się funkcja pandas.rolling()
. Pozwala ona na analizę szeregu czasowego lub innych danych numerycznych w sposób płynny i dynamiczny.
Czym jest pandas.rolling()?
Funkcja pandas.rolling()
w bibliotece Pandas służy do wykonywania operacji okienkowych na seriach danych. Oznacza to, że możemy poruszać się po zestawie danych w określonym zakresie (oknie) i wykonywać różne operacje, takie jak:
- obliczanie średniej kroczącej,
- sumowanie wartości w danym zakresie,
- analizowanie wariancji, odchylenia standardowego, mediany,
- tworzenie agregacji wartości,
- stosowanie własnych funkcji do obliczeń.
Podstawowa składnia pandas.rolling()
Podstawowy sposób użycia pandas.rolling()
wygląda następująco:
import pandas as pd
# Tworzymy przykładowe dane
data = {'Wartość': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}
df = pd.DataFrame(data)
# Dodajemy średnią kroczącą z oknem 3
df['Średnia krocząca'] = df['Wartość'].rolling(window=3).mean()
print(df)
Powyższy kod tworzy DataFrame z pojedynczą kolumną „Wartość”, a następnie oblicza średnią kroczącą dla okna o rozmiarze 3.
Podstawowe parametry pandas.rolling()
Najważniejsze parametry, które mogę wykorzystać w rolling()
, to:
Parametr | Opis |
---|---|
window |
Określa rozmiar okna, w którym będą wykonywane operacje. |
min_periods |
Minimalna liczba wartości wymaganych do obliczenia wyniku. |
center |
Jeśli True , to operacja jest wycentrowana na punkcie środkowym okna. |
win_type |
Pozwala określić typ okna (np. hamming, bartlett), co jest szczególnie przydatne w analizach sygnałów. |
Przykład zastosowania pandas.rolling()
Załóżmy, że mamy dane dotyczące dziennej ceny akcji firmy i chcemy policzyć 5-dniową średnią kroczącą:
data = {'Cena': [10, 12, 15, 18, 20, 25, 22, 30, 28, 27]}
df = pd.DataFrame(data)
# Obliczamy 5-dniową średnią kroczącą
df['5-dniowa średnia'] = df['Cena'].rolling(window=5).mean()
print(df)
Po wykonaniu powyższego kodu otrzymam nową kolumnę, która zawiera średnie wartości z ostatnich 5 dni dla każdego kolejnego dnia.
Inne operacje z pandas.rolling()
Oprócz średniej mogę w łatwy sposób obliczyć również inne statystyki:
# Suma krocząca
df['Suma krocząca'] = df['Cena'].rolling(window=5).sum()
# Maksimum w oknie 5
df['Maksymalna wartość'] = df['Cena'].rolling(window=5).max()
# Minimalna wartość w danym przedziale
df['Minimalna wartość'] = df['Cena'].rolling(window=5).min()
# Odchylenie standardowe
df['Odchylenie standardowe'] = df['Cena'].rolling(window=5).std()
Dzięki tym operacjom mogę uzyskać szczegółową analizę danych w przesuwnych oknach czasowych.
Używanie własnych funkcji z rolling().apply()
Jedną z bardziej zaawansowanych opcji jest możliwość stosowania własnych funkcji do każdej grupy danych w oknie. Można to zrobić za pomocą rolling().apply()
. Oto przykład:
import numpy as np
# Własna funkcja obliczająca znormalizowaną różnicę
def custom_function(x):
return np.max(x) - np.min(x)
df['Zakres wartości'] = df['Cena'].rolling(window=5).apply(custom_function)
print(df)
Powyższy kod oblicza różnicę między maksymalną a minimalną wartością w każdym 5-elementowym oknie.
Podsumowanie
Funkcja pandas.rolling()
umożliwia wykonywanie operacji okienkowych, co jest niezwykle przydatne w analizie szeregów czasowych. Dzięki opcji wyboru różnych metod agregacji mogę elastycznie analizować dane pod różnymi kątami. To jedno z kluczowych narzędzi, które wykorzystuję zarówno w analizie finansowej, jak i ogólnie w eksploracji 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.