【python】pandas_datareaderでYahooファイナンスの株価を取得する

pandas_datareaderを使うことで、Yahooファイナンスから過去の株価データを取得する事ができる。

pandas_datareaderを使用するには別でインストールが必要。

準備

Anaconda Promptから、pandas-datareaderをインストール。

#_ではなく、-になっている事に注意する
pip install pandas-datareader

データの取得~表示

#pandas_datareader.data のインポート
import pandas_datareader.data as pdd
import datetime

start = datetime.datetime(2013,1,1)
end = datetime.datetime(2013,1,31)

#Yahooファイナンスから、SONY, SEGASammy, Nintendoの株価の取得
#https://finance.yahoo.com/lookup のSymbolから指定する
data = pdd.get_data_yahoo(['SNE','SGAMY','NTDOY'], start, end)['Adj Close']



data [0:5]

#出力結果
     	NTDOY  	SGAMY  	SNE
Date			
2013-01-31	11.644242	4.213631	14.94
2013-01-30	11.701698	4.270572	14.99
2013-01-29	12.640132	4.223121	15.14
2013-01-28	12.822073	4.232611	15.12
2013-01-25	12.333705	4.014338	14.41

グラフ化

data.plot()

f:id:otoha-googl:20171103012139p:plain
任天堂セガサミーソニーの株価の推移




変化量の計算

変化量の計算にはpct_change()を使用する

pct = data.pct_change()

pct[0:5]

#出力結果
    	NTDOY  	SGAMY  	SNE
Date			
2013-01-31	NaN	NaN	NaN
2013-01-30	0.004934	0.013514	0.003347
2013-01-29	0.080196	-0.011111	0.010007
2013-01-28	0.014394	0.002247	-0.001321
2013-01-25	-0.038088	-0.051569	-0.046958

変化量の相関関係を調べる

pct.corr()

#出力結果
        NTDOY   	SGAMY   	SNE
NTDOY	1.000000	0.275519	0.345960
SGAMY	0.275519	1.000000	0.144161
SNE	0.345960	0.144161	1.000000

各社の株価の相関関係はあまりなさそう…。


相関関係の可視化

#seaborn , matplotlibのインポート
import seaborn as sb
import matplotlib.pyplot as plt

#ヒートマップの表示
%matplotlib inline
sb.heatmap(pct.corr())

#出力結果

f:id:otoha-googl:20171103011650p:plain
任天堂セガサミーソニーの株価の相関関係

まとめ

データ量が増えてきた時に、相関関係を調べたり、変化量を出せるのはすごく役立ちそう。
自然検索の順位変動の計算にも使えるかも。