Pandas如何按周统计时间序列数据集内对应时段的事件发生数量
Pandas按周统计事件数量实现方案
前置准备
假设原始数据集名为df,包含两个核心字段:
- 事件发生时间列(示例中列名用
event_time,可替换为你的实际列名) - 事件标识列(每行对应1条独立事件,示例中列名用
event_id,可替换为你的实际列名)
实现步骤
- 时间格式转换(若时间列已为datetime类型可直接跳过)
import pandas as pd df['event_time'] = pd.to_datetime(df['event_time'])
- 按周重采样统计事件数
# 可根据周划分规则调整rule参数,W-MON代表以周一为周结束,W-SUN代表以周日为周结束 # label='left'代表取周区间的起始日期作为统计行的日期标识 weekly_df = df.resample( rule='W-MON', on='event_time', label='left', closed='left' )['event_id'].count().reset_index()
- 调整输出格式匹配要求
# 重命名列 weekly_df.columns = ['Dates', 'Events'] # 调整日期为 日-月-年 格式 weekly_df['Dates'] = weekly_df['Dates'].dt.strftime('%d-%m-%Y') # 若需要输出周区间格式(如"27-12-2015 - 02-01-2016")可替换为以下代码 # weekly_df['end_date'] = weekly_df['Dates'] + pd.Timedelta(days=6) # weekly_df['Dates'] = weekly_df['Dates'].dt.strftime('%d-%m-%Y') + ' - ' + weekly_df['end_date'].dt.strftime('%d-%m-%Y') # weekly_df = weekly_df[['Dates', 'Events']]
常用参数调整说明
- 周起始规则调整:修改
rule参数即可适配不同周统计标准:W-MON:周统计区间为周二到下周一,符合国内部分场景统计习惯W-SUN:周统计区间为周一到周日,欧美常用统计标准
- 聚合逻辑调整:如果需要统计事件的其他指标(如求和、均值),把
count()替换为对应聚合函数即可。
内容的提问来源于stack exchange,提问作者Omar
相关产品推荐
相关产品推荐

