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()