class pandas.Grouper ( key = None,level = None,freq = None,axis = 0,sort = False ) [source]
Grouper
允许用户为目标对象指定groupby
指令
此规范将通过key
参数选择列,或者如果给出了level
或axis
参数,则指定了目标对象的索引级别。
这些是本地设置,将覆盖“全局”设置,即传递给groupby
本身的轴参数和level。
参数: | key:
level:名称/数字,默认为 目标索引的级别 freq: 如果目标选择(通过 则将按指定的频率进行分组。 有关可用频率的完整说明,请参见此处。 axis : 轴的编号/名称,默认为 sort:布尔值,默认为 是否对生成的标签进行排序 额外的 closed : 区间的封闭结束; label : 用于标记的区间边界; convention: 如果 base, loffset |
返回: | groupby指令的规范 |
例如,
1)语法糖 df.groupby('A')
>>> df.groupby(Grouper(key='A'))
2)按月分组求和
import pandas as pd # 创建示例数据 data = { 'date': pd.date_range(start='1/1/2020', periods=100, freq='D'), 'value': range(100) } df = pd.DataFrame(data) print(df.head()) # 使用 Grouper 按月分组并计算每月的总和 monthly_sum = df.groupby(pd.Grouper(key='date', freq='M')).sum() print(monthly_sum)
3)按季度分组
import pandas as pd # 创建示例数据 data = { 'date': pd.date_range(start='1/1/2020', periods=100, freq='D'), 'value': range(100) } df = pd.DataFrame(data) print(df.head()) # 使用 Grouper 按季度分组并计算每季度的平均值 quarterly_mean = df.groupby(pd.Grouper(key='date', freq='Q')).mean() print(quarterly_mean)
4)分组和汇总
import pandas as pd # 创建示例数据 data = { 'start_date': pd.date_range(start='2020-01-01', periods=6, freq='M'), 'end_date': pd.date_range(start='2020-12-31', periods=6, freq='2M'), 'value': [10, 20, 30, 40, 50, 60] } df = pd.DataFrame(data) print("Original DataFrame:") print(df) # 使用两个 Grouper 按不同的时间频率对 DataFrame 进行分组 grouped = df.groupby([ pd.Grouper(key='start_date', freq='M'), # 按每月分组 pd.Grouper(key='end_date', freq='A') # 按每年分组 ]).sum() print("Grouped DataFrame:") print(grouped)