You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中多元时间序列缺失值按同星期同时刻均值填补的实现方法

基于「星期+小时」分组的缺失值填充实现
  • 第一步:统一转换时间索引格式
    先将字符串格式的时间索引转为pandas可识别的datetime类型,确保能提取时间维度属性,执行代码:
    df.index = pd.to_datetime(df.index)
    注:你示例里的时间写法存在格式瑕疵(如24:00:00、日/月顺序颠倒的日期),pandas转格式时会自动兼容修正,不需要手动逐行调整。
  • 第二步:构造匹配需求的分组键
    不需要新建临时列,直接从DatetimeIndex提取两个核心分组维度:
    • 星期维度:用index.dayofweek获取取值(0对应周一,6对应周日)
    • 时刻维度:用index.hour提取对应小时数
  • 第三步:执行分组计算与缺失值填充
    核心逻辑为:按「同星期+同小时」对数据分组,计算每组内各账户字段的非缺失值均值,再用该均值匹配填充组内的缺失位置。直接通过transform实现同形状的均值映射,避免手动匹配错位:
    # 计算每个「星期+小时」分组下各字段的均值,返回与原df行列完全一致的结果表
    group_mean = df.groupby([df.index.dayofweek, df.index.hour]).transform('mean')
    # 用分组均值覆盖原数据中的缺失值
    df = df.fillna(group_mean)
    

场景匹配验证:以你提到的2019-02-01(周五)凌晨2点的account1缺失值为例,系统会自动匹配dayofweek=4(周五)、hour=2的分组,取该分组下所有历史非缺失的account1数值计算均值完成填充,完全符合预设的业务规则。

补充说明

  • 若某一个「星期+小时」分组下的所有记录均为缺失值,对应位置填充后仍会保留NaN,可按需追加兜底逻辑,比如用整列均值二次填充:
    df = df.fillna(df.mean())
  • 该方法完全规避了多项式插值的相邻点拟合逻辑,不依赖时间序列的前后值关系,严格按照周期同位置的统计值完成填充,适配当前业务场景的要求。

内容的提问来源于stack exchange,提问作者m_ana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 16:54:04