Magicode logo
Magicode
0
2 min read

Python(pandas) で前後のデータの差分・変化率を計算する(diff, pct_change)

前日からの差分や変動率(比)を算出したいケースありますよね。

サマリー

差分: pandas.Series.diff
変化率(変動率): pandas.Series.pct_change

参考

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.diff.html https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.pct_change.html

日経平均株価の終値の日次データを例にして、終値の差分・変動率を計算したいと思います。
使うデータは以下です。

nikkei225['Close']

Date 2022-05-26 26604.839844 2022-05-27 26781.679688 2022-05-30 27369.429688 2022-05-31 27279.800781 2022-06-01 27457.890625 Name: Close, dtype: float64

差分

nikkei225['Close'].diff()

Date 2022-05-26 NaN 2022-05-27 176.839844 2022-05-30 587.750000 2022-05-31 -89.628906 2022-06-01 178.089844 Name: Close, dtype: float64

1行前と差分が計算されました。
デフォルトでは1行前との差分で、2行前と比較した場合などは、第一引数の periods の値を指定することで可能です。

nikkei225['Close'].diff(2)

Date 2022-05-26 NaN 2022-05-27 NaN 2022-05-30 764.589844 2022-05-31 498.121094 2022-06-01 88.460938 Name: Close, dtype: float64

変化率

nikkei225['Close'].pct_change()

Date 2022-05-26 NaN 2022-05-27 0.006647 2022-05-30 0.021946 2022-05-31 -0.003275 2022-06-01 0.006528 Name: Close, dtype: float64

2行前との比較

nikkei225['Close'].pct_change(2)

Date 2022-05-26 NaN 2022-05-27 NaN 2022-05-30 0.028739 2022-05-31 0.018599 2022-06-01 0.003232 Name: Close, dtype: float64

まとめ

nikkei225['diff'] = nikkei225['Close'].diff()
nikkei225['pct_change'] = nikkei225['Close'].pct_change()
nikkei225[['Close', 'diff', 'pct_change']]

Close diff pct_change
Date
2022-05-26 26604.839844 NaN NaN
2022-05-27 26781.679688 176.839844 0.006647
2022-05-30 27369.429688 587.750000 0.021946
2022-05-31 27279.800781 -89.628906 -0.003275
2022-06-01 27457.890625 178.089844 0.006528

前日からの増減の数値化するのに使える diff, pct_change の例でした。

Discussion

コメントにはログインが必要です。