【Python】Pandas/Dataframeで傾きを取得するpct_changeメソッド
Pandas/Dataframeで特定のデータ列の傾きを出す方法についてです。pct_changeメソッドで簡単に取得することができます。
ソースコードはこちら。わかりやすくグラフ化してみます。
import pandas as pd import numpy as np import matplotlib.pyplot as plt d = [13, 16,13,16,18,21,18,16,13,16,18,21,24,27,29,27,24,21,24,21,18] header = ['POINT'] df = pd.DataFrame(data=d, columns=header) # 3データ分で傾きを算出し[CH]という列を生成 df['CH'] = df['POINT'].pct_change(3) # NaNをゼロに置換。グラフの時にX軸のズレをなくすため df['CH'] = df['CH'].fillna(0) plt.subplot(2,1,1) plt.plot(df['POINT']) plt.subplot(2,1,2) plt.bar(range(len(df['CH'])), df['CH']) plt.show()
結果はご覧のとおりです。過去3データ分の傾きなのでトレンド転換時は過去データに引っ張られてしまいますが。
生成されたデータはご覧の通りです。
index | POINT | CH |
---|---|---|
0 | 13 | 0.0 |
1 | 16 | 0.0 |
2 | 13 | 0.0 |
3 | 16 | 0.23076923076923084 |
4 | 18 | 0.125 |
5 | 21 | 0.6153846153846154 |
6 | 18 | 0.125 |
7 | 16 | -0.11111111111111116 |
8 | 13 | -0.38095238095238093 |
9 | 16 | -0.11111111111111116 |
10 | 18 | 0.125 |
11 | 21 | 0.6153846153846154 |
12 | 24 | 0.5 |
13 | 27 | 0.5 |
14 | 29 | 0.38095238095238093 |
15 | 27 | 0.125 |
16 | 24 | -0.11111111111111116 |
17 | 21 | -0.27586206896551724 |
18 | 24 | -0.11111111111111116 |
19 | 21 | -0.125 |
20 | 18 | -0.1428571428571429 |
スポンサーリンク