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

如何高效将全年分钟级测量数据聚合为小时级总和?

优化分钟级测量数据按小时求和的Python实现

问题根源

你当前的手动循环切片方法,在处理全年分钟级数据(约52万条记录)时,会产生大量的iloc切片和Python级循环操作,这是导致运行缓慢的核心原因——Python循环本身效率较低,且频繁的切片会额外消耗内存和计算资源。

高效解决方案

利用Pandas内置的resample方法,它是专门为时间序列重采样设计的优化工具,底层通过向量化操作实现,性能远优于手动循环。

优化后代码

import pandas as pd

def aggregate_measurements(tvec, data, period):
    # 将时间序列转为datetime类型并设置为数据索引
    indexed_data = data.copy()
    indexed_data.index = pd.to_datetime(tvec)
    
    if period == 'hour':
        # 按小时重采样并计算总和
        hourly_data = indexed_data.resample('H').sum()
        # 提取结果
        tvec_a = hourly_data.index.to_list()
        data_a = hourly_data.values.tolist()
    
    return tvec_a, data_a

核心优化点

  • 消除Python循环:resample采用Pandas底层的向量化计算,避免了逐段切片的循环开销,处理大数据集时速度提升显著。
  • 利用时间索引:将时间列设为数据索引后,Pandas能直接基于时间维度高效分组,无需手动定位切片范围。
  • 自动对齐时间:重采样会自动处理时间边界(比如整点对齐),无需手动取每组的第一个时间点。

额外优化提示

如果tvec本身已经是datetime类型的索引,可直接省略索引设置步骤,直接对data调用resample('H').sum(),进一步简化代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:35:09