Как группировать по неделям в pandas dataframe (с примером)


Вы можете использовать следующий базовый синтаксис для группировки строк по неделям в DataFrame 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 ')])[' values ']. sum ()

Эта конкретная формула группирует строки по неделям в столбце даты и вычисляет сумму значений для столбца значений в DataFrame.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: Как сгруппировать по неделям в Pandas

Допустим, у нас есть следующий DataFrame pandas, который показывает продажи компании в разные даты:

 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 продажи.
  • Всего за неделю, начинающуюся на следующий день после 09.01.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

Вот как интерпретировать результат:

  • Максимальный объем продаж за день в течение недели, начинающейся после 02.01.2022, составил 9 .
  • Максимальное количество продаж в день в течение недели, начинающейся со дня после 09.01.2022, составило 9 .
  • Максимальное количество продаж в день в течение недели, начинающейся после 16.01.2022, составило 7 .

Примечание . Полную документацию по операции groupby в pandas можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Как группировать по месяцам в Pandas DataFrame
Как группировать по дням в Pandas DataFrame
Как использовать Groupby и условно считать в Pandas

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *