
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
– dziennieW
– tygodniowoM
– miesięcznieQ
– kwartalnieY
– rocznieH
– godzinowoT
– minutyS
– 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:
- Zmniejszanie częstotliwości (downsampling) – przykładem jest agregacja danych dziennych do miesięcznych, jak w pierwszym przykładzie.
- 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 zastosowaniaOpanuj 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.