Як згрупувати за тижнем у pandas dataframe (з прикладом)


Ви можете використовувати наступний базовий синтаксис для групування рядків за тижнем у pandas DataFrame:

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

Ця конкретна формула групує рядки за тижнем у стовпці дати та обчислює суму значень для стовпця значень у DataFrame.

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: як групувати за тижнями в Pandas

Скажімо, у нас є такий пандас DataFrame, який показує продажі, здійснені компанією в різні дати:

 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

Пов’язане: Як створити діапазон дат у Pandas

Ми можемо використати такий синтаксис, щоб обчислити суму продажів, згрупованих за тижнями:

 #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

Ось як інтерпретувати результат:

  • Загалом протягом тижня, починаючи з наступного дня після 02.01.2022, було 32 розпродажі.
  • Всього за тиждень, починаючи з наступного дня після 01.09.2022, було 44 розпродажі.
  • Всього за тиждень, починаючи з дня після 16.01.2022, було здійснено 18 продажів.

Слід зазначити, що за замовчуванням панди припускають, що тиждень починається наступного дня після неділі ( W-SUN ).

Однак, згідно з документацією , ви можете змінити це значення для Freq .

Наприклад, ви можете вказати Freq=W-MON, якщо хочете, щоб кожен тиждень починався наступного дня після понеділка (тобто вівторка).

Ми можемо використовувати аналогічний синтаксис для обчислення максимальних значень продажів, згрупованих за тижнями:

 #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

Ось як інтерпретувати результат:

  • Максимальний обсяг продажів за день протягом тижня, починаючи з наступного дня після 01.02.2022, становив 9 .
  • Максимальна кількість продажів на день протягом тижня, починаючи з наступного дня після 09.01.2022, становила 9 .
  • Максимальна кількість продажів за день протягом тижня, починаючи з наступного дня після 16.01.2022, становила 7 .

Примітка : ви можете знайти повну документацію щодо операції groupby в pandas тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:

Як згрупувати за місяцями в Pandas DataFrame
Як згрупувати за днями в Pandas DataFrame
Як використовувати Groupby та умовно підраховувати в Pandas

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *