【Python】差分系列を簡単に求める

状況

以下のような系列(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法についてはPythonで実装する方法が身につくかと思います。JupyterNoteboo...

http://www3.u-toyama.ac.jp/kkarato/2017/econometrics/handout/Econometrics-2017-02-1006.pdf

コメント