gpt4 book ai didi

python - 如何在一个图中绘制多个 seasonal_decompose 图?

转载 作者:太空狗 更新时间:2023-10-30 02:26:24 28 4
gpt4 key购买 nike

我正在使用 statsmodels 提供的季节性分解来分解多个时间序列。下面是代码和相应的输出:

def seasonal_decompose(item_index):
tmp = df2.loc[df2.item_id_copy == item_ids[item_index], "sales_quantity"]
res = sm.tsa.seasonal_decompose(tmp)
res.plot()
plt.show()

seasonal_decompose(100)

enter image description here

有人可以告诉我如何以行 X 列格式绘制多个这样的图,以查看多个时间序列的行为吗?

最佳答案

sm.tsa.seasonal_decompose 返回一个 DecomposeResult。这具有属性 observedtrendseasonalresid,它们是 pandas 系列。您可以使用 pandas 绘图功能绘制它们中的每一个。例如。

res = sm.tsa.seasonal_decompose(someseries)
res.trend.plot()

这与 res.plot() 函数对四个系列中的每一个系列所做的基本相同,因此您可以编写自己的函数来获取 DecomposeResult以及作为输入的四个 matplotlib 轴的列表,并将四个属性绘制到四个轴。

import matplotlib.pyplot as plt
import statsmodels.api as sm

dta = sm.datasets.co2.load_pandas().data
dta.co2.interpolate(inplace=True)
res = sm.tsa.seasonal_decompose(dta.co2)

def plotseasonal(res, axes ):
res.observed.plot(ax=axes[0], legend=False)
axes[0].set_ylabel('Observed')
res.trend.plot(ax=axes[1], legend=False)
axes[1].set_ylabel('Trend')
res.seasonal.plot(ax=axes[2], legend=False)
axes[2].set_ylabel('Seasonal')
res.resid.plot(ax=axes[3], legend=False)
axes[3].set_ylabel('Residual')


dta = sm.datasets.co2.load_pandas().data
dta.co2.interpolate(inplace=True)
res = sm.tsa.seasonal_decompose(dta.co2)

fig, axes = plt.subplots(ncols=3, nrows=4, sharex=True, figsize=(12,5))

plotseasonal(res, axes[:,0])
plotseasonal(res, axes[:,1])
plotseasonal(res, axes[:,2])

plt.tight_layout()
plt.show()

enter image description here

关于python - 如何在一个图中绘制多个 seasonal_decompose 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45184055/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com