目的
今回は、Pythonで株価の折れ線グラフの作成を実施します。
この記事を読むことで、Pythonでの株価取得方法やグラフ作成の基礎を学ぶことができます。
また、任意のリアルタイムな株価を簡単に確認できるようになります。是非、オリジナルの株価グラフを作成してみて下さい。
期間:2019年12月1日~ 2021年11月30日
取得データ
SPY(SPDR S&P 500 ETF):アメリアの代表的な株価指数であるS&Pに値動きが連動するETF
VWO(バンガード FTSE エマージング・マーケッツETF):途上国株式の米ドル建てのETF
TLT(iシェアーズ米国国債20年超 ETF):期間20年以上の米国債券
HYG(iシェアーズiBoxx ハイイールド社債ETF):米ドル建てハイイールド社債に連動するETF
GLD( SPDR ゴールド・シェア):金に投資するETF
SLV( iシェアーズ・シルバー・トラスト):銀に投資するETF
環境構築
下記の記事を参考にして、グラフを簡単に表示できるJupyterLabをインストールしてみて下さい。
インストール済みの方は、次の項目から実施をお願いします。
JupyterLabでの実行結果
ライブラリインストール
ターミナルやコマンドプロンプトで下記のライブラリをインストールします。
pip install pandas
pip install pandas_datareader
pip install matplotlib
ライブラリインポート
ここからはJupyterLabへ記載するソースコードになります。
#データ構造を作成するライブラリ
import pandas as pd
#日付を指定するライブラリ
import datetime as dt
#経済データや金融商品の価格データを取得できるライブラリ
import pandas_datareader.data as web
#グラフを作成するライブラリ
import matplotlib.pyplot as plt
株価取得設定
下記の期間を変更することで、任意の期間を設定することができます。
今回、取得するデータはETFになります。
#期間設定
start = dt.date(2019,12,1)
end = dt.date(2021,11,30)
#リスト作成
ETF_LIST = ["SPY","GLD","TLT","VWO","SLV","HYG"]
#データ取得
ETF = web.DataReader(ETF_LIST,'stooq',start,end)
ETFについて、下記にわかりやすい記事のリンクを記載しておきます。
データフレーム作成
株価の終値を取得します。
#dfデータフレームに格納。
#closeをindex昇降順にソートする。
#copy()により値渡しに変更。stocksに影響を与えない。
df_ETF = ETF.Close.sort_index(ascending=True).copy()
下記のコードで作成したデータフレームを確認できます。
#データフレームの表示
df_ETF
グラフ作成
全グラフ表示
横軸:日付、縦軸:価格の折れ線グラフになります。
今回は、matplotlibというライブラリを使用し、取得した全ETFを表示します。
#全グラフ表示
plt.plot(df_ETF)
個別グラフ表示
上記の全体グラフ表示では、非常に簡単にグラフを作成することが可能ですが、株価のトレンドなどもわかりずらいため、下記のコードにより個別に株価を表示します。
#個別グラフ表示
#グラフのサイズ設定
fig = plt.figure(figsize=(12,12))
#グラフの枠設定
ax1 = fig.add_subplot(3,2,1)
ax2 = fig.add_subplot(3,2,2)
ax3 = fig.add_subplot(3,2,3)
ax4 = fig.add_subplot(3,2,4)
ax5 = fig.add_subplot(3,2,5)
ax6 = fig.add_subplot(3,2,6)
#グラフの描写
ax1.plot(df_ETF.iloc[:,0], label = df_ETF.iloc[:,0].name, color = 'C0')
ax2.plot(df_ETF.iloc[:,1], label = df_ETF.iloc[:,1].name, color = 'C1')
ax3.plot(df_ETF.iloc[:,2], label = df_ETF.iloc[:,2].name, color = 'C2')
ax4.plot(df_ETF.iloc[:,3], label = df_ETF.iloc[:,3].name, color = 'C3')
ax5.plot(df_ETF.iloc[:,4], label = df_ETF.iloc[:,4].name, color = 'C4')
ax6.plot(df_ETF.iloc[:,5], label = df_ETF.iloc[:,5].name, color = 'C5')
#グラフ設定
#全体のタイトル
fig.suptitle("Date & Value")
#複数グラフへの設定
for i in range(6):
plt.subplot(3, 2, i+1)
#ラベル設定
plt.xlabel('Date')
plt.ylabel('Value,USD')
#文字を斜めに表示
plt.xticks(rotation=45)
plt.legend(loc='best')
#グラフの重なりを修正
plt.tight_layout()
まとめ
以上、Pythonでの株価のグラフ作成になります。
是非、自分でアレンジしてみて、オリジナルの株価グラフを作成してみて下さい。