よっしーの私的空間

機械学習を中心に興味のあることについて更新します

Pythonで株の銘柄コード一覧を取得する方法

Python上で銘柄コード一覧を取得して、Pandas.DataFrameに格納する方法についてまとめます。手っ取り早くソースコードを見たい方は本記事最下段の参考まで飛んでください。

1.概要

  1. JPX(日本取引所)から最新の銘柄コード一覧(Excel)をPythonでダウンロード
  2. ダウンロードしたExcelPythonで開いてPandas.DataFrameに取り込む

2.JPXから銘柄コード一覧をダウンロード

RequestsというHTTPライブラリを使用して、Excelのダウンロードを行います。Requestsの詳細については以下が良くまとまっています。
Requests の使い方 (Python Library) - Qiita

import requests
url = "https://www.jpx.co.jp/markets/statistics-equities/misc/tvdivq0000001vg2-att/data_j.xls"
r = requests.get(url)
with open('data_j.xls', 'wb') as output:
    output.write(r.content)

Excelダウンロード用のURLを指定して、requests.get関数を使用レスポンスボディを取得して、content関数でデータ取得するだけです。URLはJPXのホームページから以下の通り取得可能です。
f:id:t-yoshi-book:20210605164739p:plain

3.ダウンロードしたExcelをPandas.DataFrameに取り込む

pandas.read_excel関数を使ってダウンロードしたExcelを開いてDataFrameに取り込むだけです。

import pandas as pd
stocklist = pd.read_excel("./data_j.xls")
stocklist.loc[stocklist["市場・商品区分"]=="市場第一部(内国株)",
              ["コード","銘柄名","33業種コード","33業種区分","規模コード","規模区分"]
             ]

4.データの内容

以下のようなデータです。
f:id:t-yoshi-book:20210605165201p:plain

東証一部や二部以外にETF等も取得できます。
また、業種や規模区分も取得できるので、グループ分けして分析したりもできそうです。


参考:ソースコード全文

import requests
url = "https://www.jpx.co.jp/markets/statistics-equities/misc/tvdivq0000001vg2-att/data_j.xls"
r = requests.get(url)
with open('data_j.xls', 'wb') as output:
    output.write(r.content)

import pandas as pd
stocklist = pd.read_excel("./data_j.xls")
stocklist.loc[stocklist["市場・商品区分"]=="市場第一部(内国株)",
              ["コード","銘柄名","33業種コード","33業種区分","規模コード","規模区分"]
             ]