Вы можете использовать следующий базовый синтаксис для группировки строк по кварталам в pandas DataFrame:
#convert date column to datetime
df['date'] = pd.to_datetime(df['date'])
#calculate sum of values, grouped by quarter
df.groupby(df['date']. dt.to_period('Q'))['values']. sum ()
Эта конкретная формула группирует строки по кварталам в столбце даты и вычисляет сумму для столбца значений в DataFrame.
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: как сгруппировать по кварталам в Pandas
Предположим, у нас есть следующий кадр данных pandas, который показывает продажи, сделанные какой-либо компанией в разные даты:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'date ': pd.date_range (start='1/1/2022', freq='M', periods= 12 ),
'sales': [6, 8, 10, 5, 4, 8, 8, 3, 5, 14, 8, 3]})
#view DataFrame
print(df)
date sales
0 2022-01-31 6
1 2022-02-28 8
2 2022-03-31 10
3 2022-04-30 5
4 2022-05-31 4
5 2022-06-30 8
6 2022-07-31 8
7 2022-08-31 3
8 2022-09-30 5
9 2022-10-31 14
10 2022-11-30 8
11 2022-12-31 3
Связанный: Как создать диапазон дат в Pandas
Мы можем использовать следующий синтаксис для вычисления суммы продаж, сгруппированных по кварталам:
#convert date column to datetime and subtract one week
df['date'] = pd.to_datetime(df['date'])
#calculate sum of sales, grouped by quarter
df.groupby(df['date']. dt.to_period('Q'))['sales']. sum ()
date
2022Q1 24
2022Q2 17
2022Q3 16
2022Q4 25
Freq: Q-DEC, Name: sales, dtype: int64
Вот как интерпретировать вывод:
- Всего за первый квартал было совершено 24 продажи.
- Всего за второй квартал было совершено 17 продаж.
- Всего за третий квартал было совершено 16 продаж.
- Всего за четвертый квартал было совершено 25 продаж.
Мы можем использовать аналогичный синтаксис для вычисления какой-либо другой метрики, сгруппированной по кварталам.
Например, вместо этого мы могли бы рассчитать максимальное значение продаж, сгруппированное по кварталам:
#convert date column to datetime
df['date'] = pd.to_datetime(df['date'])
#calculate max of sales, grouped by quarter
df.groupby(df['date']. dt.to_period('Q'))['sales']. max ()
date
2022Q1 10
2022Q2 8
2022Q3 8
2022Q4 14
Freq: Q-DEC, Name: sales, dtype: int64
Вот как интерпретировать вывод:
- Максимальный объем продаж за отдельный месяц в течение первого квартала составил 10 .
- Максимальный объем продаж за отдельный месяц во втором квартале составил 8 .
- Максимальный объем продаж за отдельный месяц в течение третьего квартала составил 8 .
- Максимальный объем продаж за отдельный месяц в четвертом квартале составил 14 .
Примечание.Полную документацию по операции groupby в pandas можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Как сгруппировать по месяцам в Pandas DataFrame
Как сгруппировать по неделям в Pandas DataFrame
Pandas: как использовать Groupby и Count с условием