Как группировать по неделям в 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