非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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

スポンサーリンク

 - Python