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

Pandas:基于事件列表批量生成多个±12小时区间时间序列图表

完整实现代码

import matplotlib.pyplot as plt
import pandas as pd
from datetime import timedelta # 用于计算时间偏移量

# 原有主数据集读取逻辑
df = pd.read_csv('/Users/clove/Documents/Tide_data_repo/parsed.csv',parse_dates=['Date_Time'],index_col= ['Date_Time'])
df.Verified = pd.to_numeric(df.Verified, errors='coerce')
df.dropna(axis='index',how='any',inplace=True)

# ----------------------新增事件遍历绘图逻辑----------------------
# 1. 读取事件列表CSV,替换为你本地实际的文件路径、事件时间列名
event_df = pd.read_csv('你的事件列表文件路径.csv', parse_dates=['事件时间列名'])

# 2. 遍历所有事件生成对应区间图表
for idx, event_row in event_df.iterrows():
    # 获取当前事件的发生时间
    event_time = event_row['事件时间列名']
    # 计算±12小时的时间窗口边界
    start_time = event_time - timedelta(hours=12)
    end_time = event_time + timedelta(hours=12)
    
    # 从主数据中截取对应窗口的数据集
    window_df = df.loc[start_time:end_time]
    
    # 跳过窗口内无有效数据的异常场景
    if window_df.empty:
        print(f"第{idx+1}个事件(发生时间:{event_time})对应时间区间无数据,已跳过绘图")
        continue
    
    # 绘图逻辑
    fig, ax = plt.subplots(figsize=(12, 6))
    window_df.plot(ax=ax)
    # 增加红色虚线标记事件发生时间
    ax.axvline(x=event_time, color='red', linestyle='--', label='事件发生时间')
    ax.set_title(f"事件{idx+1} 时间区间:{start_time.strftime('%Y-%m-%d %H:%M')} 至 {end_time.strftime('%Y-%m-%d %H:%M')}")
    ax.legend()
    
    # 可选配置:直接保存图片到本地,避免100+图表弹窗占用内存,替换为你本地的存储文件夹路径即可
    plt.savefig(f"/Users/clove/Documents/事件图表/事件_{idx+1}_{event_time.strftime('%Y%m%d%H%M')}.png", bbox_inches='tight')
    # 关闭画布释放内存,批量绘图必加否则会出现内存溢出
    plt.close()

# 如果你需要逐个弹窗查看图片,注释掉上面的plt.savefig和plt.close,打开下方代码即可
# plt.show()

注意事项

  • 代码中的你的事件列表文件路径.csv、事件时间列名、图片存储文件夹路径需要替换为你本地的实际配置
  • 图片存储文件夹需要提前创建完成,否则会触发保存报错
  • 如果你的事件列表里有事件名称字段,可以把标题中的事件{idx+1}替换为event_row['事件名称列名'],图表辨识度会更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:06:10