旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【Python】 季節性分解実行時のエラーへの対処

季節性分解のやり方を調べていると、seasonal_decomposeメソッドを利用すれば良いことが分かりました。ただ、実行すると

TypeError: ‘numpy.float64’ object cannot be interpreted as an integer

というエラーが出てしまいました。

import statsmodels.api as sm

df = pd.read_csv('time_series_data.csv', index_col=0)
df = df.reset_index()
df['datetime'] = pd.to_datetime(df['datetime'], format='%Y/%m/%d')
df['y'] = df['y'].values.astype(float)
df = df.set_index(['datetime'])
# ここでエラー
res = sm.tsa.seasonal_decompose(df.values, freq=7)
res.plot()
plt.show()

このエラーはstatsmodels\tsa\filters\filtertools.pyの下記コードを

elif nsides == 2:
    trim_head = np.ceil(len(filt)/2.) - 1 or None
    trim_tail = (np.ceil(len(filt)2.) - len(filt) % 2) or None

下記のように書き換えると動作するようになりました。

elif nsides == 2:
    trim_head = np.ceil(len(filt)/2.) - 1 or None
    trim_head = (int)(trim_head)
    trim_tail = (np.ceil(len(filt)2.) - len(filt) % 2) or None
    trim_tail = (int)(trim_tail)