轴必须设置'freq'以转换为周期|季节|分解

2024-05-14 03:36:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个临时DF,其中包含以下数据

Quarter
2016Q3    146660510.0
2016Q4    123641451.0
2017Q1    125905843.0
2017Q2    129656327.0
2017Q3    126586708.0
2017Q4    116804168.0
2018Q1    118167263.0
2018Q2    121633740.0
2018Q3    125314447.0
2018Q4    120994896.0
2019Q1    126124709.0
2019Q2    134753318.0

我正在将其作为季度数据传递到seasonal_decompose,如下所示,但我得到一个错误消息说“Axis必须将freq设置为转换为期间”。频率已在DF中设置。我认为这个问题与您必须向matplotlib指定x轴是周期这一事实有关,但我不知道如何做到这一点,也找不到使用带四分之一的DecomposeResult对象的任何其他示例

result = seasonal_decompose(temp, model='additive',period=4)  
result.plot()
plt.show()

Tags: 数据消息dfmatplotlib错误result事实频率
1条回答
网友
1楼 · 发布于 2024-05-14 03:36:14
 date=['2016Q3'
 ,'2016Q4'
 ,'2017Q1'
 ,'2017Q1'
 ,'2017Q3'
 ,'2017Q4'
 ,'2018Q1'
 ,'2018Q3'
 ,'2018Q3'
 ,'2018Q4'
 ,'2019Q1'
 ,'2019Q2']

 data=[146660510.0
 ,123641451.0
 ,125905843.0
 ,129656327.0
 ,126586708.0
 ,116804168.0
 ,118167263.0
 ,121633740.0
 ,125314447.0
 ,120994896.0
 ,126124709.0
 ,134753318.0]

 df=pd.DataFrame({'date':date,'data':data})
 df['date']=pd.to_datetime(df['date'])
 df=df.set_index('date')
 ax=df.plot(figsize=(14,2))
 plt.show()

 decomposition=sm.tsa.seasonal_decompose(x=df['data'],model='additive',      extrapolate_trend='freq', period=3)

 decomposition_trend=decomposition.trend
 ax= decomposition_trend.plot(figsize=(14,2))
 ax.set_xlabel('Date')
 ax.set_ylabel('Trend of time series')
 ax.set_title('Trend values of the time series')
 plt.show()

 decomposition_residual=decomposition.resid
 ax= decomposition_residual.plot(figsize=(14,2))
 ax.set_xlabel('Date')
 ax.set_ylabel('Residual of time series')
 ax.set_title('Residual values of the time series')
 plt.show()

相关问题 更多 >