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

如何使用Python计算不规则时间间隔数据的时间加权平均值?

不规则时序数据按天计算时间加权平均值Python实现

实现思路

将不规则时间序列重采样为固定间隔(如1小时)的序列,使用前向填充补全缺失值,完全符合「无对应取值时取最后一次有效值」的规则,之后按天求平均值即可直接得到时间加权结果,不需要手动计算区间时长,逻辑简单不易出错。

依赖安装

先安装数据处理所需的pandas库:
pip install pandas

完整实现代码

import pandas as pd

# 原始数据,也可以通过pd.read_csv从文件读取
raw_data = [
    ["17-5-2021 03:00", 84.9],
    ["17-5-2021 11:00", 84.9],
    ["17-5-2021 15:00", 84.7],
    ["17-5-2021 23:00", 84.7],
    ["18-5-2021 03:00", 84.5],
    ["18-5-2021 11:00", 84.5],
    ["18-5-2021 15:00", 84.9],
    ["18-5-2021 23:00", 84.9]
]
df = pd.DataFrame(raw_data, columns=["事件时间", "数值"])

# 转换时间列为datetime格式,设置为索引并按时间排序
df["事件时间"] = pd.to_datetime(df["事件时间"], format="%d-%m-%Y %H:%M")
df = df.set_index("事件时间").sort_index()

# 重采样为1小时间隔,前向填充缺失值,bfill用于填充第一天起始时段的空白值,可按需调整
hourly_df = df.resample("H").ffill().bfill()

# 按天分组计算平均值即为时间加权平均值
daily_weighted_avg = hourly_df.groupby(hourly_df.index.date)["数值"].mean().reset_index()

# 格式化日期输出
daily_weighted_avg["index"] = pd.to_datetime(daily_weighted_avg["index"]).dt.strftime("%d-%m-%Y")
daily_weighted_avg.columns = ["事件时间", "加权平均值"]

print(daily_weighted_avg)

灵活调整说明

  • 若需要更高计算精度,将resample("H")改为resample("T")即可切换为分钟级重采样
  • 若不需要填充第一天最早数据点之前的时段,删除.bfill()即可,计算时会自动排除空白时段
  • 若统计区间需要调整为每日某一固定时刻到次日同一时刻,修改groupby的时间偏移参数即可适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 15:06:05