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

如何在Python中用365天、52周替代8760小时绘制时序图

解决思路&代码实现

8760个timestep对应一年的小时级数据(365天×24小时),先把timestep转成标准时间格式,再按日/周维度聚合后就能轻松绘图。以下是完整可运行的代码:

1. 导入依赖库

import pandas as pd
import matplotlib.pyplot as plt

2. 数据加载与时间转换

假设你的数据已经存在DataFrame df 中(如果是CSV文件,用pd.read_csv('你的文件路径.csv')读取即可)。将timestep转换为可识别的时间格式:

# 从2023年1月1日0时开始,每个timestep对应1小时
df['datetime'] = pd.date_range(start='2023-01-01 00:00:00', periods=8760, freq='H')

# 将时间列设为索引,方便后续聚合操作
df.set_index('datetime', inplace=True)

3. 按日/周维度聚合数据

这里以均值为例,你可根据需求换成sum()(总和)、max()(最大值)等统计方式:

# 按日聚合,计算每日数值均值
daily_data = df['value'].resample('D').mean()

# 按周聚合,计算每周数值均值(默认周从周一开始,要周日开头就加参数:weekday=6)
weekly_data = df['value'].resample('W').mean()

4. 绘制趋势图

# 设置清爽的绘图风格
plt.style.use('seaborn-v0_8')

# 绘制日维度趋势图
plt.figure(figsize=(12, 5))
daily_data.plot(title='每日数值趋势')
plt.xlabel('日期')
plt.ylabel('数值')
plt.grid(True)
plt.show()

# 绘制周维度趋势图
plt.figure(figsize=(12, 5))
weekly_data.plot(title='每周数值趋势')
plt.xlabel('周')
plt.ylabel('数值')
plt.grid(True)
plt.show()

补充说明

  • 若你的timestep不是从年初开始,修改pd.date_range()的start参数即可(比如改成'2023-03-01 08:00:00')。
  • 数据有缺失值的话,聚合前可以用df.fillna(method='ffill')(向前填充)或df.interpolate()(插值填充)补全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:32:45