みなさんこんにちは、ZeroTerasu(@ZeroTerasu)です。
今回は、株価をはじめとした様々な金融関連情報を取得できるPythonライブラリの「pandas-datareader」について解説致します。
以前は、”pandas.io”というpandasの一部だったのですが、現在は”pandas_datareader”という独立したライブラリになっています。
公式ライブラリのリンクは下記の通りです。
インストール方法
・anaconda環境(jupyterlab)の場合、セル上に下記コードを入力して「shift + Enter」でインストールされます。
・Windows, MACで且つanaconda環境をインストール済みの場合、ターミナルから下記コマンドを実行すると、anaconda環境ではなく、ローカルのpythonフォルダにパッケージがインストールされる場合があります。ローカル環境にインストールされた場合、jupyterlabでは使用出来ない場合があります。このケースの場合でjupyterlabでも対象のパッケージを使用したい場合は、jupyterlabのセルに下記コマンドを入力して操作を実行する必要がありますので、ご注意ください。
・下記コマンドでインストール出来ない場合、”pip”を”!pip”に変えてコードを実行してみて下さい。
pip install pandas-datareader
# 上記でうまくいかない場合
!pip install pandas-datareader
情報取得元
・公式ドキュメントによると、pandas-datareaderでは下記の17個のサイトの情報を取得することができる様子です。
Tiingo https://www.tiingo.com
IEX https://iexcloud.io
Alpha Vantage
Econdb
Enigma
Quandl
St.Louis FED (FRED)
Kenneth French’s data library
World Bank
OECD
Eurostat
Thrift Savings Plan
Nasdaq Trader symbol definitions
Stooq https://stooq.com/
MOEX
Naver Finance
Yahoo Finance
この中で、日本の株価を取得できるのは、「stooq」および「Yahoo Finance」です。
今回は、ポーランドの株価情報サイトである「stooq」を用いた株価情報取得について解説致します。
まずは、一般的な引数を下記に記述します。多くの引数を設定することが出来ますが、ここでは必要最小限の引数にだけ焦点を当てて解説致します。
pandas_datareader.data.DataReader(ticker-symbol, data_source, start, end, api_key)
・pandas-datareaderを使用して株価情報を取得するためには、上記のメソッドを使用します。
・’ticker-symbol’ と ‘data_source’ は必須項目です。
・’api_key’ は Alpha Vantage等APIキーの使用が必要な情報元のデータでは必須項目です。
・’start’ と ‘end’は任意項目です。
・そのほかの引数につきましては、公式ドキュメントに各メソッド毎に解説されていますので、併せてご参照下さい。https://pydata.github.io/pandas-datareader/py-modindex.html
stooqから株価情報を取得する方法
stooq使用時の数式:pandas_datareader.data.DataReader(‘ティッカー*’, data_source=’stooq’, start, end)
* ティッカー:stooqサイト上のティッカーシンボルを使用。主に下記のような表現が用いられている。
・日本指数:’^NKX'(日経225原物)
・日本株個別銘柄:’7203.JP’ (トヨタ自動車)
・米国指数:’^DJI'(DOW30), ‘^SPX'(S&P500), ‘^NDX'(NASDAQ100)
・米国個別銘柄:’AAPL.US'(APPLE)
data_source:情報取得元を記述します。今回は、’stooq’から取得します*。
* ‘yahoo’ = 米国yahooから取得する場合。’av-daily’ = Alpha Vantage の日足データを取得する場合
start:取得情報の開始日。(date型またはdatetime型で指定します。)
end:取得情報の開始日。(date型またはdatetime型で指定します。)
下記は、三菱UFJ銀行(8306)の2020年1月1日から本日までの株価を取得し、最新の5営業日分を表示させるコードです。
import os
import datetime as dt
import pandas_datareader.data as pdr
symbol = '8306.JP'
data_source = 'stooq'
start = dt.datetime(2020,1,1,1,1,10)
end = dt.date.today()
df = pdr.DataReader(symbol, data_source, start, end)
df[:5]
# 実行結果
Open High Low Close Volume
Date
2022-08-25 727.7 733.4 727.7 731.5 33973600
2022-08-24 725.0 730.9 724.3 728.1 39200900
2022-08-23 728.3 728.6 722.3 723.1 44046400
2022-08-22 728.3 732.4 727.6 732.4 34903600
2022-08-19 731.4 731.4 723.6 728.0 34318100
yahoo finance (米国)から株価情報を取得する方法
yahoo fianance使用時の数式:pandas_datareader.data.DataReader(‘ティッカー*’, data_source=’yahoo’, start, end)
・stooqと使い方は同じです。data_sourceの部分をyahooに変更します。また、ティッカーもyahoo fianceに掲載されている表記に合わせます。
* ティッカー:yahoo finance上のティッカーシンボルを使用。主に下記のような表現が用いられている。
・日本指数:’^N225′(日経225原物)
・日本株個別銘柄:’7203.T’ (トヨタ自動車)
・米国指数:’^DJI'(DOW30), ‘^GSPC'(S&P500), ‘^NDX'(NASDAQ100)
・米国個別銘柄:’AAPL'(APPLE)
エラー修正:2023-05-13
過去に掲載していた記事のコードではエラーが見られましたので、下記に修正コードを掲載します。
“yfinance”というモジュールのインストールが必要になっていますので、インストールされていない方は” pip install yfinance “でインストールからご対応お願い致します。
※履歴として過去に掲載していたコードも下に残しておきます。
コメント