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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *