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

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

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.

„` Inny ciekawy artykuł: Jak działa pandas shift w języku Python? Przykład zastosowania
KajoDataSpace