💹

pandas-datareader で株価情報を取得

2021/10/02に公開

はじめに

以下の記事で、JupyterLab App のインストール方法を記載しました。
今回は、Web上の様々なデータソースに簡単にアクセスできるパッケージ (pandas-datareader) を使って、株価情報の取得を試してみます。

https://zenn.dev/ochamikan/articles/b265f50f77dd8b

前提

JupyterLab App 及び、そのPython環境にpandas-datareaderがインストールされていることを説明の前提とします。詳細は上記記事を参照してください。

取得可能なデータ

バージョン0.10.0 (2021/7/13)時点では、公式ドキュメントContents/Remote Data Access にサポートしているデータソースが記載されています。データソースによって取得できる情報は異なりますが、例えば、株価、為替、人口統計などがあります。

今回は、Yahoo Finance[1] を利用してみます。

株価情報の取得と可視化

サマリ

上場しているJR各社の株価を取得し、コーポレートカラー[2]を用いてグラフにします。

銘柄 証券コード コーポレートカラー
JR東日本 9020.T green
JR西日本 9021.T blue
JR東海 9022.T orange
JR九州 9142.T red

1銘柄の情報取得

まずは、1銘柄 (JR東日本) の情報を取得してみます。

# パッケージ
import pandas_datareader.data as web

# 株価情報の取得
df = web.DataReader("9020.T", data_source='yahoo', start='2010-01-01')

JupyterLab で上記コードを実行して、dfを表示させてみると次のことが分かります。

  • 2010年の大発会以降のデータが取得[3]されている。
  • 高値(High)、安値(Low)、始値(Open)、終値(Close)、出来高(Volume)、調整後終値(Adj Close)のデータが存在する。
    株価情報データ

複数銘柄の情報取得とグラフ化

次に、全4銘柄の情報を取得し、終値(Close)をグラフ化してみます。

# パッケージ
import pandas_datareader.data as web

# 会社情報の定義 (JR東日本, JR西日本, JR東海, JR九州)
SYMBOLS = ["9020.T", "9021.T", "9022.T", "9142.T"]
COLORS = ["green", "blue", "orange", "red"]

# 株価情報の取得
df = web.DataReader(SYMBOLS, data_source='yahoo', start='2010-01-01')

# 終値のグラフ化
df["Close"].plot(figsize=(20,10), color=COLORS)

JupyterLab で上記コードを実行すると、次のようなグラフが表示されます。JR九州は2016年10月25日に上場したため、それ以降のデータのみ表示されています。
終値のグラフ

ポイント

  • データの取得には、pandas-datareader.dataモジュールのDataReader()メソッド[4]を用います。様々なオプションがありますが、本記事では下記を指定しています。
    • name: データ名(1銘柄) or データ名のリスト(複数銘柄)
    • data_source: データソース(Yahoo Finance)
    • start: 取得開始日時
  • データの可視化には、pandas.DataFrameモジュールのplot()メソッドを使います。グラフ色の指定は SYMBOLSCOLORS の順番を対応させる必要があります。

まとめ

以上、pandas-datareader を使って、株価情報の取得を試してみました。
また、簡単な表とグラフでの可視化を行い、データ内容の確認も行いました。

脚注
  1. リンクにある通り、米国版の Yahoo Finance のデータにアクセスしているようです。なお、日本語版の Yahoo Finance では、こちらにあるようにスクレイピングを禁止していますが、米国版と直接関係があるかは分かりません。いずれにしよ、APIキー不要で利用できるデータソースは、過度な負荷をかけないように留意が必要です。 ↩︎

  2. コーポレートカラーはこちらを参考にしています。 ↩︎

  3. Yahoo Financeのサイトからも同じデータがダウンロードできますので、気になる方は同じ値であることを確認してみてください。 ↩︎

  4. GitHubリポジトリによると、様々なデータソースにアクセスするための入り口となるメソッドのようです。 ↩︎

Discussion