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

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

Pracując z danymi szeregów czasowych w Pythonie, często napotykam sytuacje, w których dane muszę zagregować lub przekształcić do innej skali czasowej. W takich momentach bardzo przydatna okazuje się funkcja pandas.resample(). Dzięki niej mogę łatwo zmieniać częstotliwość próbkowania danych czasowych, co jest niezwykle użyteczne przy analizie trendów i wzorców.

Czym jest pandas.resample()?

Metoda pandas.resample() służy do zmiany częstotliwości indeksu czasowego w obiektach pandas.Series oraz pandas.DataFrame. Oznacza to, że mogę zgrupować dane według nowych interwałów czasowych i stosować do nich różne operacje agregujące, takie jak:

  • sumowanie wartości,
  • obliczanie średniej,
  • znajdowanie wartości maksymalnych i minimalnych,
  • interpolację brakujących wartości.

Resampling działa podobnie do funkcji groupby(), ale z tą różnicą, że kluczem grupowania jest oś czasu.

Jak działa pandas resample w języku Python?

Aby zobrazować działanie pandas.resample(), zacznę od prostego przykładu. Mam dane dotyczące sprzedaży w ujęciu dziennym i chcę przekształcić je do danych miesięcznych, agregując wartości sumarycznie.


import pandas as pd

# Tworzę przykładowe dane
data = {
    'date': pd.date_range(start='2024-01-01', periods=10, freq='D'),
    'sales': [10, 15, 20, 25, 30, 5, 40, 35, 50, 45]
}

# Tworzę DataFrame
df = pd.DataFrame(data)
df.set_index('date', inplace=True)

# Przekształcam dane na miesięczne wartości sumaryczne
monthly_sales = df.resample('M').sum()

print(monthly_sales)

Wynikiem będzie nowy DataFrame z wartościami zagregowanymi na podstawie miesięcznego interwału:

Data Sprzedaż
2024-01-31 275

Opcje częstotliwości resamplingu

Podczas resamplingu mogę korzystać z różnych skrótów określających częstotliwości czasowe. Oto kilka najczęściej używanych:

  • D – dziennie
  • W – tygodniowo
  • M – miesięcznie
  • Q – kwartalnie
  • Y – rocznie
  • H – godzinowo
  • T – minuty
  • S – sekundy

Przykład zastosowania – obliczanie średniej tygodniowej

Załóżmy, że zamiast sumowania wartości miesięcznych, chcę obliczyć średnią sprzedaż tygodniową. Mogę to zrobić w następujący sposób:


weekly_avg_sales = df.resample('W').mean()
print(weekly_avg_sales)

Wynik to nowy DataFrame z wartościami uśrednionymi dla każdego tygodnia.

Resampling w górę i w dół

Resampling może działać w dwóch kierunkach:

  1. Zmniejszanie częstotliwości (downsampling) – przykładem jest agregacja danych dziennych do miesięcznych, jak w pierwszym przykładzie.
  2. Zwiększanie częstotliwości (upsampling) – polega na tworzeniu nowych punktów czasowych, np. przekształcanie danych miesięcznych w dzienne.

Interpolacja brakujących wartości

Kiedy zwiększam częstotliwość danych, pojawiają się „puste” wartości dla nowych okresów. Mogę uzupełnić je poprzez interpolację:


df_upsampled = df.resample('D').asfreq()
df_filled = df_upsampled.interpolate(method='linear')

Teraz zmienne interpolowane mają wartości obliczone na podstawie trendu danych.

Podsumowanie

Metoda pandas.resample() jest niezwykle przydatna w pracy z szeregami czasowymi. Umożliwia:

  • łatwe agregowanie danych na różne przedziały czasowe,
  • zmniejszanie lub zwiększanie częstotliwości próbkowania,
  • stosowanie różnych metod interpolacji dla brakujących wartości.

Jeśli pracuję z danymi czasowymi, to znajomość tej funkcji zdecydowanie ułatwia życie i pozwala na bardziej efektywną analizę danych.

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