Jak grupować według tygodni w pandas dataframe (z przykładem)


Możesz użyć następującej podstawowej składni, aby grupować wiersze według tygodni w ramce DataFrame pandy:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' values ']. sum ()

Ta konkretna formuła grupuje wiersze według tygodnia w kolumnie daty i oblicza sumę wartości dla kolumny wartości w DataFrame.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: Jak grupować według tygodni w Pandas

Załóżmy, że mamy następującą ramkę danych pandy, która pokazuje sprzedaż dokonaną przez firmę w różnych datach:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' date ': pd. date_range (start='1/5/2022', freq='D', periods=15),
                   ' sales ': [6, 8, 9, 5, 4, 8, 8, 3, 5, 9, 8, 3, 4, 7, 7]})

#view DataFrame
print (df)

         dirty date
0 2022-01-05 6
1 2022-01-06 8
2 2022-01-07 9
3 2022-01-08 5
4 2022-01-09 4
5 2022-01-10 8
6 2022-01-11 8
7 2022-01-12 3
8 2022-01-13 5
9 2022-01-14 9
10 2022-01-15 8
11 2022-01-16 3
12 2022-01-17 4
13 2022-01-18 7
14 2022-01-19 7

Powiązane: Jak utworzyć zakres dat w Pandach

Do obliczenia sumy sprzedaży pogrupowanej według tygodni możemy zastosować następującą składnię:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate sum of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. sum ()

date
2022-01-02 32
2022-01-09 44
2022-01-16 18
Freq: W-SUN, Name: sales, dtype: int64

Oto jak zinterpretować wynik:

  • W tygodniu rozpoczynającym się dzień po 1 lutego 2022 r. odnotowano łącznie 32 sprzedaże.
  • W tygodniu rozpoczynającym się następnego dnia po 01.09.2022 r. odnotowano łącznie 44 sprzedaże.
  • W tygodniu rozpoczynającym się następnego dnia po 16.01.2022 r. dokonano łącznie 18 sprzedaży.

Należy zaznaczyć, że pandy domyślnie zakładają, że tydzień zaczyna się następnego dnia po niedzieli ( W-SUN ).

Jednak zgodnie z dokumentacją można zmienić tę wartość dla Freq .

Na przykład możesz określić Częstotliwość=W-MON, jeśli chcesz, aby każdy tydzień rozpoczynał się po poniedziałku (tj. wtorku).

Podobną składnię możemy zastosować do obliczenia maksymalnych wartości sprzedaży pogrupowanych według tygodni:

 #convert date column to datetime and subtract one week
df[' date '] = pd. to_datetime (df[' date ']) - pd. to_timedelta (7, unit=' d ')

#calculate max of values, grouped by week
df. groupby ([pd. Group (key=' date ', freq=' W ')])[' sales ']. max ()

date
2022-01-02 9
2022-01-09 9
2022-01-16 7
Freq: W-SUN, Name: sales, dtype: int64

Oto jak zinterpretować wynik:

  • Maksymalna dzienna sprzedaż w tygodniu rozpoczynającym się po 01.02.2022 wyniosła 9 .
  • Maksymalna dzienna liczba sprzedaży w tygodniu rozpoczynającym się po 01.09.2022 wyniosła 9 .
  • Maksymalna dzienna liczba sprzedaży w tygodniu rozpoczynającym się po 16.01.2022 wyniosła 7 .

Uwaga : pełną dokumentację operacji grupowania w pandach znajdziesz tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje na pandach:

Jak grupować według miesięcy w Pandas DataFrame
Jak grupować według dnia w Pandas DataFrame
Jak korzystać z Groupby i liczyć warunkowo w Pandach

Dodaj komentarz

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