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

时间序列seasonal_decompose分析异常,图表无法正常显示求助

时间序列分解异常排查与修复(seasonal_decompose)

问题情况

使用seasonal_decompose分析时间序列的季节因子和趋势因子时,分解结果不正确,图表也无法正常显示,清除缓存后问题依旧。

数据示例

date        value
2020-02-01  67.05
2020-03-01  69.08
2020-06-01  70.25
2020-07-01  68.74
2020-08-01  67.31
...
至2022-11-04

原使用代码

from statsmodels.tsa.seasonal import seasonal_decompose
df_add_decompose = seasonal_decompose(df_modified, model = 'additive', period=12)
df_add_decompose.plot()

排查与修复方案

1. 处理时间序列的连续性与索引

seasonal_decompose要求数据连续且按时间排序,同时索引必须是datetime类型。你的数据存在时间缺失(比如2020年4-5月无数据),先做以下处理:

import pandas as pd

# 转换日期列并设为索引,按时间排序
df_modified['date'] = pd.to_datetime(df_modified['date'])
df_modified = df_modified.set_index('date').sort_index()

# 补全缺失时间点(月度数据用'MS',日度数据替换为'D')
df_modified = df_modified.asfreq('MS')
# 用线性插值填充缺失的value值
df_modified['value'] = df_modified['value'].interpolate(method='linear')

2. 匹配period参数与数据频率

你设置的period=12仅适用于月度数据(代表年周期)。如果是日频数据,年周期应设period=365,月周期设period=30,请根据实际数据频率调整。

3. 修复图表显示

分解后需手动触发matplotlib的显示命令,否则图表可能无法正常渲染:

import matplotlib.pyplot as plt

df_add_decompose = seasonal_decompose(df_modified, model='additive', period=12)
df_add_decompose.plot()
plt.show()  # 关键:添加此行强制显示图表

4. 验证分解结果

运行修正后的代码后,可单独查看各因子确认结果是否合理:

# 查看趋势因子
print(df_add_decompose.trend.head())
# 查看季节因子
print(df_add_decompose.seasonal.head())
# 查看残差
print(df_add_decompose.resid.head())

内容的提问来源于stack exchange,提问作者Shashank Keshavadasu LatentVie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:40:36