pandas-datareaderのインストール手順と米国株の株価取得方法
<pandas-datareaderで米国株の株価取得>*1
「pandas-datareader」で株価を取得します。以前、日本株の株価をスクレイピングで取得しましたが、「pandas-datareader」の方がより簡単に取得できました。
バンガード S&P500 ETF (VOO)の株価を取得し、グラフ表示するまでの手順を紹介します。
[1] インストール
[1-1] pipでインストール
公式の手順に従ってインストールします。pipコマンドでインストールが可能です。
pip3 install pandas-datareader
最新版をインストールする場合は、GitHubからダウンロードしインストールします。
pip3 install git+https://github.com/pydata/pandas-datareader.git
[1-2] 動作確認
正常に動作するか確認します。
import pandas_datareader as pdr # 米国国債10年を5年分取得 gs10 = pdr.get_data_fred('GS10') print(gs10) # GS10 # DATE # 2016-03-01 1.89 # 2016-04-01 1.81 # ...(途中省略)... # 2020-11-01 0.87 # 2020-12-01 0.93
ダウ平均株価が正常に取得できました。
[2] データソースを決める
[2-1] 使用可能なデータソースを確認する
pandas-datareaderでは複数のデータソースから、株価や為替の情報が取得できます。取得できる情報は下記リンクに掲載されています。
Remote Data Access — pandas-datareader 0.9.0rc1+2.g427f658 documentation
ユーザ登録しAPIキーの取得が必要なデータソースもあります。今回はAPIキー無しで株価が取得可能な「Stooq」を選択しました。
[2-2] Stooqでデータを取得してみる
公式に載っている、Stooqでダウ平均を取得するソースコードを実行してみます。
import pandas_datareader.data as web # ダウ平均をSqooqで取得 f = web.DataReader('^DJI', 'stooq') print(f.head()) # Open High Low Close Volume # Date # 2021-01-29 30553.91 30553.91 29856.30 29982.62 638488708 # 2021-01-28 30377.19 30951.41 30377.19 30603.36 528513252 # 2021-01-27 30893.78 30893.78 30206.91 30303.17 655432794 # 2021-01-26 30968.55 31121.42 30921.71 30937.04 441398941 # 2021-01-25 30989.85 30989.85 30564.06 30960.00 532855231
ダウ平均株価が正常に取得できました。
[3] 株価を取得する
[3-1] VOOの株価取得
バンガード S&P500 ETF (VOO)の株価を取得してみます。
import datetime # バンガード S&P500 ETF (VOO)の2020年以降の株価を取得 voo = web.DataReader( 'VOO', 'stooq', start=datetime.datetime(2020, 1, 1) ) print(voo) # Open High Low Close Volume # Date # 2021-01-29 345.31 346.2200 338.57 340.18 5803647 # 2021-01-28 345.97 351.0707 345.58 347.13 3432188 # ...(途中省略)... # 2020-01-03 291.08 293.1900 290.90 292.08 3294270 # 2020-01-02 293.12 294.2600 292.18 294.23 3194572 # # [272 rows x 5 columns]
DataReaderのAPI仕様は下記URLで参照できます。pandas_datareader.data.DataReader
はラッパーになっています。stooq
を指定するとStooqDailyReader
が実際には使われます。
Stooq.com — pandas-datareader 0.9.0rc1+2.g427f658 documentation
[3-2] 株価をグラフ表示
取得したVOOの株価をmatplotlibでグラフ表示します。
import matplotlib.pyplot as plt # 図と座標軸を取得 fig = plt.figure() ax = fig.add_subplot(1,1,1) # 折れ線グラフをセット ax.plot(voo.index, voo['Close'], label='VOO') ax.grid(axis='y', color='gray', ls=':') ax.legend() # 折れ線グラフを表示 fig.show()
終わりに
驚くべきほど簡単に株価が取得できました。取得した時点でDataFrameになっているのが最大のメリットですね。
しかも、株価だけでなく国債利回りやダウ平均、為替まで取得できるので、本当に無料で良いのかなと思ってしまうほどです。