我有以下数据框,我称之为“sales_df”:
Value
Date
2004-01-01 0
2004-02-01 173
2004-03-01 225
2004-04-01 230
2004-05-01 349
2004-06-01 258
2004-07-01 270
2004-08-01 223
... ...
2015-06-01 218
2015-07-01 215
2015-08-01 233
2015-09-01 258
2015-10-01 252
2015-11-01 256
2015-12-01 188
2016-01-01 70
我想将其趋势与季节性组件分开,为此,我使用statsmodels.tsa.seasonal_decompose通过以下代码:
decomp=sm.tsa.seasonal_decompose(sales_df.Value)
df=pd.concat([sales_df,decomp.trend],axis=1)
df.columns=['sales','trend']
这让我知道了:
sales trend
Date
2004-01-01 0 NaN
2004-02-01 173 NaN
2004-03-01 225 NaN
2004-04-01 230 NaN
2004-05-01 349 NaN
2004-06-01 258 NaN
2004-07-01 270 236.708333
2004-08-01 223 248.208333
2004-09-01 243 251.250000
... ... ...
2015-05-01 270 214.416667
2015-06-01 218 215.583333
2015-07-01 215 212.791667
2015-08-01 233 NaN
2015-09-01 258 NaN
2015-10-01 252 NaN
2015-11-01 256 NaN
2015-12-01 188 NaN
2016-01-01 70 NaN
请注意,Trend系列的开头和结尾都有6个NaN。 所以我问,是吗?为什么会这样?
答案 0 :(得分:5)
这是预期的,因为如果未指定seasonal_decompose
参数(如您所做),filt
默认使用对称移动平均值。频率是从时间序列推断出来的。
https://searchcode.com/codesearch/view/86129185/