Resampling danych

Resampling danych to proces zmiany częstotliwości danych w czasie. Może to obejmować zmianę danych z większej na mniejszą częstotliwość (np. z godzinnych na dzienne), lub z mniejszej na większą częstotliwość (np. z dziennych na godzinne). W pandas resampling jest zwykle wykonywany za pomocą metody resample, która jest dostępna w obiektach typu Series i DataFrame.

Przykład resamplowania danych z większej na mniejszą częstotliwość (z dziennych na miesięczne):

import pandas as pd

# Tworzenie przykładowego DataFrame'u z danymi dziennymi
df = pd.DataFrame({'Data': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-02-01', '2022-02-02', '2022-03-01'], 'Liczba': [1, 2, 3, 4, 5, 6]})

# Konwersja kolumny 'Data' na typ daty
df['Data'] = pd.to_datetime(df['Data'])

# Ustawienie kolumny 'Data' jako indeksu
df.set_index('Data', inplace=True)

# Resamplowanie danych z dziennych na miesięczne i obliczenie sumy dla każdego miesiąca
df_monthly = df.resample('M').sum()

Wynikowy DataFrame df_monthly będzie zawierał dane miesięczne z sumą Liczba dla każdego miesiąca.

Przykład resamplowania danych z mniejszej na większą częstotliwość (z godzinnych na minutowe):

import pandas as pd

# Tworzenie przykładowego DataFrame'u z danymi godzinowymi
df = pd.DataFrame({'Data': ['2022-01-01 00:00:00', '2022-01-01 01:00:00', '2022-01-01 02:00:00', '2022-01-01 03:00:00', '2022-01-01 04:00:00'], 'Liczba': [1, 2, 3, 4, 5]})

# Konwersja kolumny 'Data' na typ daty
df['Data'] = pd.to_datetime(df['Data'])

# Ustawienie kolumny 'Data' jako indeksu
df.set_index('Data', inplace=True)

# Resamplowanie danych z godzinnych na minutowe i obliczenie średniej dla każdej minuty
df_minutely = df.resample('T').mean()

Wynikowy DataFrame df_minutely będzie zawierał dane minutowe z średnią Liczba dla każdej minuty.

Można również użyć parametru how podczas resamplowania, aby określić sposób obliczania nowych wartości dla nowej częstotliwości. Dostępne opcje to mean, sum, max, min itp. Domyślnie używana jest opcja mean.

# Resamplowanie danych z godzinnych na minutowe i obliczenie sumy dla każdej minuty
df_minutely = df.resample('T').sum()