Pythonのpandas datareaderをインストールして株価データを取得する方法【日本株・米国株】
株価分析をするには株価データの取得が必須なので,まずはデータを取得できるようにしなければなりません.
Pythonモジュール『pandas datareader』を用いることで,Yahoo!ファイナイスやその他APIから株価データを取得することができます.
本記事では,Pythonにpandas datareaderをインストールし,株価を取得する方法を解説します。
ただし,本記事ではPythonのインストールがされていることを前提に進めますので,Pythonのインストールがお済でない方は以下の記事を参考にPythonを使えるようにしておいてください.
pandas datareaderのインストール
pandas datareaderは,pipでインストールできます.
pip install pandas_datareader
それでは,pandas datareaderで株価を取得してチャートをプロットしてみましょう.
pandas datareaderによる株価データ取得
基本的には,pandas_datareaderによる株価データ取得は
import pandas_datareader.data as web
df = web.DataReader('銘柄','API', 開始日, 終了日)
で行います.以下で具体例を見ていきます.
日本株
まずは,日本株のデータを取得しましょう.
日経平均株価
日経平均株価を取得するには,以下のようにします.
import datetime
import pandas_datareader.data as web
import matplotlib.pyplot as plt
start = datetime.date(2008,1,1)
end = datetime.date.today()
df = web.DataReader('^N225', 'yahoo', start, end)
print(df)
株価の取得は
df = web.DataReader('^N225', 'yahoo', start, end)
の部分で行っています.引数は(’銘柄’,’API’,開始日,終了日)です.これによって,dfは以下のような値を持ちます.
High Low Open Close Volume Adj Close
Date
2008-01-07 14667.849609 14438.610352 14549.379883 14500.549805 139800000.0 14500.549805
2008-01-08 14547.799805 14365.860352 14429.299805 14528.669922 146800000.0 14528.669922
2008-01-09 14602.650391 14271.570312 14364.709961 14599.160156 155500000.0 14599.160156
... ... ... ... ... ... ...
2021-03-16 30026.400391 29755.470703 29770.390625 29921.089844 83800000.0 29921.089844
2021-03-17 29984.970703 29825.160156 29836.830078 29914.330078 74600000.0 29914.330078
2021-03-18 30485.000000 30041.500000 30148.480469 30216.750000 0.0 30216.750000
そして,以下が株価を取得してチャートをプロットするコードです.
上のコードとの違いは,プロットする部分と,(調整後)終値だけを取得するためにDataReaderの最後に[“Adj Close"]をつけている部分だけです.このコードを実行すると,右のグラフが得られます.
import datetime
import pandas_datareader.data as web
import matplotlib.pyplot as plt
start = datetime.date(2008,1,1)
end = datetime.date.today()
df = web.DataReader('^N225', 'yahoo', start, end)["Adj Close"]
df.plot(figsize=(8,6),fontsize=18)
plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1, fontsize=18)
plt.grid(True)
plt.show()

また,データ取得の部分は
df = web.DataReader("NIKKEI225", "fred", start, end)
でもOKです.ただし,APIが"fred"の場合は終値しか取得されませんから,[“Adj Close"]は不要です.また,日経平均株価に連動するETFでも良いならダイワ上場投信 – 日経225を指定する
df = web.DataReader('1320.T', 'yahoo', start, end)["Adj Close"]
でも可能です.
個別株(日本)
日本の個別株をプロットしてみます.銘柄の部分を証券コードにします.先ほどのデータ取得部分のコードを,
df = web.DataReader('6758.T', 'yahoo', start, end)["Adj Close"]
もしくは
df = web.DataReader('6758.JP', 'stooq', start, end)['Close']
に置き換えてください.これでソニー(6758)の株価を取得できます.

米国株
次に,米国株のデータを取得しましょう.
S&P500
df = web.DataReader('^GSPC', 'yahoo', start, end)['Adj Close']
または
df = web.DataReader('SP500', 'fred', start, end)
でS&P500のデータを取得できます.

ダウ平均株価
df = web.DataReader('^DJI', 'yahoo', start, end)['Adj Close']
もしくは
df = web.DataReader('DJIA', 'fred', start, end)
でダウ平均株価のデータを取得できます.

個別株(米国)
最後に,米国個別株を取得しましょう.銘柄の部分をチェッカーコードにするだけです.例えば,コカ・コーラ(KO)なら
df = web.DataReader('KO', 'yahoo', start, end)['Adj Close']
でOKです.
せっかくなので,複数の銘柄をいっぺんに取得・プロットしてみましょう.以下のコードでできます.
import datetime
import pandas_datareader.data as web
import matplotlib.pyplot as plt
start = datetime.date(2008,1,1)
end = datetime.date.today()
codelist = ["KO","PG","MSFT"]
df= web.DataReader(codelist, 'yahoo', start, end)["Adj Close"]
df.plot(figsize=(8,6),fontsize=18)
plt.legend(bbox_to_anchor=(0, 1), loc='upper left', borderaxespad=1, fontsize=18)
plt.grid(True)
plt.show()

まとめ
pandas_datareaderによる株価データ取得は,
import pandas_datareader.data as web
df = web.DataReader('銘柄','API', 開始日, 終了日)
でできます.以下はその例です.
日経平均株価
df = web.DataReader('^N225', 'yahoo', start, end)
日本個別株(例はソニー)
df = web.DataReader('6758.T', 'yahoo', start, end)
S&P500
df = web.DataReader('^GSPC', 'yahoo', start, end)
ダウ平均株価
df = web.DataReader('^DJI', 'yahoo', start, end)
米国個別株(例はコカ・コーラ)
df = web.DataReader('KO', 'yahoo', start, end)
※終値だけを取得するには,以下のように最後に['Adj Close’]を付けて下さい.
df = web.DataReader('^N225', 'yahoo', start, end)['Adj Close']
※一度株価を取得したらCSVファイルに保存し,初回以降はそれを読み込むことをおすすめします(方法はこちら).
他のデータ取得ライブラリ
株価データ取得をする他のライブラリとして,『yfinance(fix_yahoo_finance』というものもあります.
使い方はpandas datareaderとかなり似ているので,本記事の内容も応用できると思います.
yfinanceの使い方に関しては,以下の記事で解説しています.
ディスカッション
コメント一覧
まだ、コメントがありません