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

如何绘制年周多级索引pandas DataFrame的连续时间序列图

解决方案

核心思路是将多级索引中的年份、周数组合为连续的时间戳序列作为x轴,避免绘图工具按年份索引分组绘制多条曲线。

步骤1:导入依赖库

import pandas as pd
import matplotlib.pyplot as plt

步骤2:将年+周转换为连续时间戳

针对你现有的多级索引DataFrame(假设变量名为df,值列名为Hohokus_gage),执行如下处理:

# 把多级索引转为普通列
df = df.reset_index()
# 构造ISO标准日期,完美兼容53周场景
df['date'] = pd.to_datetime(
    df['year'].astype(str) + '-W' + df['weekofyear'].astype(str) + '-1',
    format='%G-W%V-%u'
)
# 可选:按周对齐时间轴,补全缺失周的空值(避免时间轴跳变)
df = df.set_index('date').sort_index().asfreq('W-MON')

格式说明:%G代表ISO周所属年份,%V代表ISO周数(取值1-53),%u代表周几(1对应周一),该格式可以正确识别存在53周的年份,不会出现日期解析错误。

步骤3:绘制连续时间序列图

直接用处理好的日期作为x轴绘图即可,只会生成一条连续曲线:

plt.figure(figsize=(16,6))
plt.plot(df.index, df['Hohokus_gage'], linewidth=0.8)
plt.xlabel('日期')
plt.ylabel('Hohokus_gage值')
plt.title('1923年-2020年周度序列变化')
plt.grid(alpha=0.3)
plt.show()

注意事项

  • 如果你的周数规则不是ISO周,可调整to_datetime的格式参数适配,比如用%Y-W%U-%w适配美国周数规则
  • 如果你不需要补全缺失周,可跳过asfreq步骤,直接用df.plot(x='date', y='Hohokus_gage')绘图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:27:04