Pandy: jak ponownie próbkować szeregi czasowe za pomocą groupby()
Ponowne próbkowanie danych szeregów czasowych oznacza agregację danych w nowym okresie.
Jeśli chcesz ponownie próbkować szeregi czasowe w pandach za pomocą operatora groupby , możesz użyć następującej podstawowej składni:
group = df. groupby ([pd. Group (freq=' W '), ' store ']) result = group[' sales ']. sum (). unstack (' store '). fillna (0)
Ten konkretny przykład grupuje wiersze ramki DataFrame według kolumny sklepu , następnie ponownie próbkuje szereg czasowy według tygodnia ( freq=’W’ ), a następnie oblicza sumę wartości w kolumnie sprzedaży .
Należy pamiętać, że możemy ponownie próbkować dane szeregów czasowych do różnych okresów, w tym:
- P .: Sekundy
- min : minuty
- H : Godziny
- J :Dzień
- W : Tydzień
- M : Miesiąc
- P : Kwartał
- O : Rok
Poniższy przykład pokazuje, jak w praktyce ponownie próbkować dane szeregów czasowych za pomocą operacji grupowania .
Przykład: Ponów próbę szeregu czasowego za pomocą groupby w Pandach
Załóżmy, że mamy następującą ramkę danych pand, która pokazuje całkowitą sprzedaż zrealizowaną każdego dnia w dwóch różnych sklepach:
import pandas as pd #createDataFrame df = pd. DataFrame ({' sales ': [13, 14, 17, 17, 16, 22, 28, 10, 17, 10, 11], ' store ': ['A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B']} , index=pd. date_range ('2023-01-06', '2023-01-16', freq='d')) #view DataFrame print (df) sales store 2023-01-06 13 A 2023-01-07 14 A 2023-01-08 17 A 2023-01-09 17 A 2023-01-10 16A 2023-01-11 22 B 2023-01-12 28 B 2023-01-13 10 B 2023-01-14 17 B 2023-01-15 10 B 2023-01-16 11 B
Załóżmy, że chcemy pogrupować wiersze według sklepów , następnie ponownie przepróbkować szereg czasowy według tygodni, a następnie obliczyć sumę wartości w kolumnie sprzedaży .
W tym celu możemy użyć następującej składni:
#group by store and resample time series by week group = df. groupby ([pd. Group (freq=' W '), ' store ']) #calculate sum of sales each week by store result = group[' sales ']. sum (). unstack (' store '). fillna (0) #view results print (result) store AB 2023-01-08 14.0 0.0 2023-01-15 16.5 17.0 2023-01-22 0.0 11.0
Z wyniku możemy zobaczyć:
- Suma sprzedaży w tygodniu kończącym się 01.08.2023 w sklepie A wynosi 14 .
- Suma sprzedaży za tydzień kończący się 01.08.2023 w sklepie B wynosi 0 .
I tak dalej.
Należy pamiętać, że w tym przykładzie zdecydowaliśmy się obliczyć sumę wartości w kolumnie sprzedaży .
Możemy jednak wybrać inne wskaźniki, takie jak liczba, średnia, mediana, min, max itp.
Po prostu zamień sum() w powyższym kodzie na count() , Mean() , Median() itp. aby obliczyć wybraną metrykę.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w Pythonie:
Jak wykreślić szereg czasowy w Matplotlib
Jak wykreślić szereg czasowy w Seaborn
Jak obliczyć MAPE z szeregów czasowych w Pythonie