こんにちは。カルークです。
今回はpandas datareaderを使って株価情報や財務情報などを取得する方法について纏めたいと思います。
pandas datareaderって何?
pandas datareaderはWeb上の色々な情報ソースに対してAPIを使って簡単に取得することが出来る便利なツールです。OSS(オープンソースソフトウェア)なので、python環境さえあれば誰でも無料で試すことができます。
インストール
pandas datareaderがインストールされていない場合、以下のコマンドでpipインストールを行います。
pip install pandas-datareader
パッケージのインポート
pipでインストールが出来たら早速pandas datareaderを使ってみたいと思います。ここからはpythonコード上の話になります。まずはパッケージのインポートを行います。
import pandas_datareader.data as web
株価データ(daily)を取得する
それでは早速株価データを取得してみましょう。ここでは、2010/01/01から今日(記事執筆時点の2021/12/15)までのソフトバンクグループ(証券コード:9984)の株価データを取ってきたいと思います。
import datetime
start = datetime.date(2010,1,1)
end = datetime.date.today()
df = web.DataReader('9984.T', 'yahoo', start, end)
df.head()
df.head()で以下のような結果が取得できているのがわかります。
それぞれのカラムの意味は以下になります。
- High:その日の最高値
- Low:その日の最安値
- Open:その日の始値
- Close:その日の終値(調整前)
- Volume:その日の取引金額
- Adj Close:その日の終値(調整後)
株式分割などがあるとCloseが不連続になってしまい扱いにくくなってしまいますが(※)、その辺りを調整してくれた株価がAdj Closeとなっているので、終値を用いる場合はAdj Closeを用いる方が良さそうです。
(※)例えば、1株100円の株価の時に2分割されると、1株50円×2となり、株価的には半値の50円となる
引数に”yahoo”とありますが、yahoo financeからのdaily stock prices情報であることを表しています。
銘柄は第一引数で指定しますが、個別株価だけでなく、日経225やアメリカのS&P500などインデックス指数なども取得ができます。
# 日経225の株価データ取得
df = web.DataReader('^N225', 'yahoo', start, end)
df.head()
# S&P500の株価データ取得
df = web.DataReader('^GSPC', 'yahoo', start, end)
df.head()
配当や株式分割の情報を取得する
さきほどの引数で”yahoo”と指定していた箇所を”yahoo-actions”とすることで、企業の配当に関する情報や、株式分割の情報を取得することが出来ます。
例えば、IBMの配当、株式分割の情報を取得してみましょう。
actions = web.DataReader('IBM', 'yahoo-actions', start, end)
actions.head(10)
以下のような結果が出力されます。action=”SPLIT”は株式分割、action=”DIVIDEND”は配当を表します。
ちなみに、 “yahoo-actions” ではなく”yahoo-dividends”という、配当情報だけを取得するAPIもあるようです。 しかしながらこれは”yahoo-actions” の情報に含まれているので、わざわざ “yahoo-dividends”を使うことは無いかも知れません。
dividends = web.DataReader('IBM', 'yahoo-dividends', start, end)
dividends.head(10)
まとめ
今回は、pandas datarederを利用し、株価や株式分割、配当金に関する時系列の情報取得の方法についてまとめました。
ちなみにpandas datareaderを利用して全東証上場銘柄の株価データを取得する方法については、以下でも纏めています。良ければこちらもあわせてご覧頂ければと思います。
また、株価以外に企業のファンダメンタルズ情報(財務諸表など)の取得方法に関する記事も書いているので、良かったら合わせてご覧頂ければ幸いです。