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)