你可以使用以下基本语法在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。
注意:你可以在这里找到pandas中groupby操作的完整文档。
其他资源
下面的教程解释了如何在pandas中执行其他常见的操作:
如何在Pandas数据框架中按月分组
如何在Pandas数据框架中按周分组
Pandas:如何使用Groupby和带条件计数