在 pandas.Grouper() 中,freq 参数用于指定时间频率,它定义了如何对时间序列数据进行分组。freq 的值可以是多种时间单位

发布于:2025-02-11 ⋅ 阅读:(33) ⋅ 点赞:(0)

pandas.Grouper() 中,freq 参数用于指定时间频率,它定义了如何对时间序列数据进行分组。freq 的值可以是多种时间单位,具体包括以下几类:

常见的时间频率 (freq) 取值:

1. 日频率(Daily)
  • 'D':按天分组。
2. 周频率(Weekly)
  • 'W':按周分组,默认从星期天开始。
  • 'W-MON', 'W-TUE', …, 'W-SUN':按周分组,指定周的起始日期(比如 'W-MON' 表示从周一开始的周)。
3. 月频率(Monthly)
  • 'M':按月分组,通常指从每月的最后一天开始。
  • 'MS':按月开始分组,即从每月的第一天开始。
  • 'B':按工作日(月内的工作日)分组。
4. 季节频率(Quarterly)
  • 'Q':按季度分组,通常指每年四个季度的最后一天。
  • 'QS':按季度开始分组,即从每个季度的第一天开始。
  • 'Q-JAN', 'Q-FEB', …, 'Q-DEC':按指定的季度开始时间分组。
5. 年频率(Yearly)
  • 'A''Y':按年分组,通常指每年的最后一天。
  • 'AS''YS':按年开始分组,即从每年的第一天开始。
  • 'A-JAN', 'A-FEB', …, 'A-DEC':按指定月份开始的年度分组。
6. 小时、分钟、秒(Hourly, Minute, Second)
  • 'H':按小时分组。
  • 'T''min':按分钟分组。
  • 'S':按秒分组。
  • 'L''ms':按毫秒分组。
  • 'U''us':按微秒分组。
7. 自定义频率(Custom Frequencies)
  • 'B':按工作日分组(排除周末)。
  • 'CB':按日历工作日分组(排除周六和周日,包含假期)。
  • 'WOM-1MON''WOM-2MON':按周的某个位置分组(例如第一个周一,第二个周一等)。
8. 其他一些特殊频率(Extra Frequencies)
  • 'BM':按工作日的月度频率分组。
  • 'CBM':按日历工作日的月度频率分组。
  • 'MS':按月的开始日分组。
  • 'Q-JAN':按季度的开始月份分组。

举例:

import pandas as pd

# 创建一个时间序列数据
data = {
    'date': pd.date_range('2023-01-01', periods=10, freq='D'),
    'value': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
}
df = pd.DataFrame(data)

# 按月分组(freq='M')
monthly_group = df.groupby(pd.Grouper(key='date', freq='M')).sum()
print(monthly_group)

# 按季度分组(freq='Q')
quarterly_group = df.groupby(pd.Grouper(key='date', freq='Q')).sum()
print(quarterly_group)

# 按年分组(freq='A')
yearly_group = df.groupby(pd.Grouper(key='date', freq='A')).sum()
print(yearly_group)

# 按周分组(freq='W')
weekly_group = df.groupby(pd.Grouper(key='date', freq='W')).sum()
print(weekly_group)

# 按小时分组(freq='H')
hourly_group = df.groupby(pd.Grouper(key='date', freq='H')).sum()
print(hourly_group)

常用频率总结:

freq 描述
'D' 按天分组
'W' 按周分组
'M' 按月分组
'Q' 按季度分组
'A' 按年分组
'H' 按小时分组
'T''min' 按分钟分组
'S' 按秒分组
'B' 按工作日分组
'CB' 按日历工作日分组
'MS' 按月的第一天分组
'QS' 按季度的第一天分组
'A-JAN' 每年从1月开始
'Q-JAN' 按每年的1月季度开始分组

选择频率时的注意点:

  • freq 参数适用于时间数据列(datetime64 类型),因此输入的数据必须是时间序列数据。
  • 可以通过 pd.date_range() 创建包含时间戳的 DataFrame,并用不同的 freq 值来演示不同的分组方式。

通过这些不同的频率,你可以轻松地对时间序列数据进行按天、周、月、季度、年等不同粒度的聚合和分析,帮助在实际项目中进行更精细的数据分析。


网站公告

今日签到

点亮在社区的每一天
去签到