状況
以下のような系列(pandasのseries)があったときに、その差分系列を求めたい。
series = pd.Series([x for x in range(5)])
print(series)
0 0 1 1 2 2 3 3 4 4 dtype: int64
解決法
1行前との差分系列がほしいときは、以下の操作をします。
series.diff(1)
0 NaN 1 1.0 2 1.0 3 1.0 4 1.0 dtype: float64
対数差分がほしいときは以下。
np.log(series).diff(1)
0 NaN 1 inf 2 0.693147 3 0.405465 4 0.287682 dtype: float64
ちなみに、diff()を使わずに以下の計算でも同じ結果が得られますが、少し煩雑です。
original_series - original_series.shift()
、対数差分ならnp.log(series) - np.log(series.shift())
。
参考
Pythonによる時系列分析の基礎 | Logics of Blue
Pythonを使った時系列解析の方法について説明します。時系列データの読み込みから、図示、自己相関などの統計量の計算といった基礎から始めて、自動SARIMAモデル推定までを説明します。この記事を読めば、簡単なBox-Jenkins法について...
http://www3.u-toyama.ac.jp/kkarato/2017/econometrics/handout/Econometrics-2017-02-1006.pdf
コメント