You need to enable JavaScript to run this app. 如何从小时级系统负载时序中提取每年峰值出现当日的全量数据?
优惠活动
大模型
产品
解决方案
定价
更多

如何从小时级系统负载时序中提取每年峰值出现当日的全量数据?

基于Pandas的具体实现流程

所有操作可以直接在Python环境中基于pandas完成,无额外依赖:

  1. 时间字段预处理
    原始数据的date_time如果是字符串格式,先转换为pandas可识别的时间类型,为后续时间维度拆分做准备:
    import pandas as pd
    # 读取小时级原始数据,替换为自身的文件路径即可
    df_raw = pd.read_csv("hourly_system_load.csv", parse_dates=["date_time"])
    
  2. 拆分辅助时间维度
    从完整时间戳中提取年份、纯日期两个字段,用于后续分组定位和数据匹配:
    df_raw["year"] = df_raw["date_time"].dt.year
    df_raw["date"] = df_raw["date_time"].dt.normalize() # 归一化为当日0点的时间格式,适配pandas的类型匹配规则
    
  3. 定位每年的负载峰值日期
    按年份分组,定位每一年中system_load最高的那条记录,提取对应的日期值,得到覆盖2013-2020年全部峰值日的匹配清单:
    # 按年分组取每组内负载最大值的行索引
    peak_row_idx = df_raw.groupby("year")["system_load"].idxmax()
    # 提取对应行的年、日期字段,生成年份-峰值日的匹配字典
    peak_date_map = dict(zip(df_raw.loc[peak_row_idx, "year"], df_raw.loc[peak_row_idx, "date"]))
    
  4. 筛选全量目标数据
    用生成的峰值日映射规则,从原始数据中匹配所有属于峰值日的小时记录,去掉辅助字段后即为需要的目标数据框:
    # 给每一行数据匹配对应年份的峰值日,筛选日期匹配的所有行
    df_target = df_raw[df_raw.apply(
        lambda x: x["date"] == peak_date_map[x["year"]], axis=1
    )][["date_time", "system_load"]].reset_index(drop=True)
    

补充说明:如果原始数据存在小时缺失的情况,可以在筛选出峰值日后,按每个峰值日生成完整的0-23点时间序列,和当日已有负载值做左连接,保证输出为完整24小时的无缺测序列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 17:27:03