如何在pandas DataFrame中统计单日各小时记录量趋势以识别高流量时段
实现步骤
你当前已经完成了按「小时+日期」分组统计单日单小时流量条数的操作,后续按以下步骤处理即可得到预期结果:
- 第一步:重置分组结果的索引结构,仅保留需要的计数字段,避免冗余数据干扰
- 第二步:对「小时」维度做第二次分组,计算每个小时的日均流量值
- 第三步:补全0-23全部小时的记录,无流量的小时对应值设为0,最后整理输出格式
完整可运行代码示例
import pandas as pd # 若时间列还未转成timestamp格式,先执行这行转换 df["created_at"] = pd.to_datetime(df["created_at"]) # 你已实现的按小时+日期分组计数,直接取标识列的计数结果即可 hour_date_count = df.groupby([df["created_at"].dt.hour.rename("hour"), df["created_at"].dt.date]).count()["device_id"] # 按小时维度二次分组,计算每个小时的日均流量 hour_avg = hour_date_count.groupby("hour").mean().rename("traffic") # 补全0-23所有小时,缺失值填充为0 result = hour_avg.reindex(range(24), fill_value=0).reset_index() # 打印输出和你预期格式完全一致的结果 print(result.to_csv(index=False))
逻辑说明
以你给出的示例数据验证:16点分别在8月26号有1条记录、8月27号有2条记录,总计数3条除以2个出现过记录的日期,得到均值1.5,和你预期输出完全匹配;7点仅在8月26号有2条记录,均值为2也符合预期。
内容的提问来源于stack exchange,提问作者ProgramSpree
相关产品推荐
相关产品推荐

