上場企業リストを簡単に取得する方法を紹介します。
本記事の内容
- 上場企業リストの元データ「EDINETコードリスト」
- EDINETコードリストの本当の価値
- EDINETコードリストの加工
それでは、上記に沿って解説していきます。
上場企業リストの元データ「EDINETコードリスト」
データの出どころから、説明します。
誰かが個人で作っているようなデータなら、信用できませんからね。
そこは、安心してください。
紹介するのは、金融庁が用意しているデータになります。
金融庁が運用するEDINETサイトで公開されています。
公開ページのURLは、以下。
https://disclosure.edinet-fsa.go.jp/E01EW/BLMainController.jsp?uji.bean=ee.bean.W1E62071.EEW1E62071Bean&uji.verb=W1E62071InitDisplay&TID=W1E62071&PID=W0EZ0001&SESSIONKEY=&lgKbn=2&dflg=0&iflg=0
上記ページの最下部に次のような表示があります。
「EDINETコードリスト」が、上場企業リストの元データとなります。
ダウンロードするのは、zip形式のファイルです。
zipを解凍すると、「EdinetcodeDlInfo.csv」が解凍先フォルダにあります。
EdinetcodeDlInfo.csvの先頭10行は、以下。
ちょっと見慣れない形式のCSVファイルです。
1行目にメタ情報みたいなものが記載されています。
2行目に列名という形になっています。
そして、列名は全部で13列あります。
index | 列名 |
0 | EDINETコード |
1 | 提出者種別 |
2 | 上場区分 |
3 | 連結の有無 |
4 | 資本金 |
5 | 決算日 |
6 | 提出者名 |
7 | 提出者名(英字) |
8 | 提出者名(ヨミ) |
9 | 所在地 |
10 | 提出者業種 |
11 | 証券コード |
12 | 提出者法人番号 |
さて、上記のCSVの件数「9870件」が何かおかしいと思いませんか?
実は、EDINETコードリストには非上場企業も含まれているのです。
非上場企業が有価証券報告書を提出しています。
ここでは詳細を説明しませんが、そこそこの規模の企業が対象になります。
したがって、上場企業リストを作成する際には非上場企業を除外する必要があります。
「上場区分」を見てもよいですが、「証券コード」の有無で区別可能です。
なお、EDINETコードリストにおける「証券コード」は以下。
証券コードは、銘柄コードでもあります。
そして、銘柄コードには4桁の数字コードが割り振られます。
しかし、上記の「証券コード」を見ると5桁です。
これは、最後の「0」が不要な値になります。
金融庁は何かしら意図があって「0」を付加しているとは思います。
でも、私たちが利用する際には邪魔でしかありません。
ここでCSVの注意点をまとめます。
- 上場企業は証券コードに値がある
- 証券コードの下1桁(最後の「0」)は不要
上記の2点さえ注意すれば、EDINETコードリストは上場企業リストとして利用できます。
以上、上場企業リストの元データについて説明しました。
次は、 EDINETコードリストの本当の価値について確認していきます。
EDINETコードリストの本当の価値
ここからは、エクセルやプログラムをできる人が対象になります。
そのままでもEDINETコードリストは、上場企業リストとして利用可能です。
しかし、より使いやすいようにできます。
実は、EDINETコードリストの本当の価値は以下のデータです。
- EDINETコード
- 証券コード
この2つのデータが関連付いていることに価値があります。
証券コードだけなら、他の手段でも集めることが可能です。
実際、Yahooファイナンスをスクレイピングすることで集めています。
プログラムさえできれば、上場企業リストは取得できるのです。
ただ、金融庁のお墨付きはありません。
その意味では、EDINETコードリストの方が信頼性は高いです。
それに加えて、EDINETコードリストには「EDINETコード」も付いてきます。
今後は、EDINETコードリストを利用していくことにします。
しかし、ここで一つ問題があります。
EDINETコードリストには、邪魔な情報が多すぎます。
そのため、システムで利用しやすい形にEDINETコードリストを加工します。
以上、EDINETコードリストの本当の価値について説明しました。
次は、EDINETコードリストの加工について説明します。
EDINETコードリストの加工
EDINETコードリストには、邪魔な情報が多いということを説明しました。
したがって、個人的に無駄だと思う情報を削除します。
結果的には、次の3つだけが残ります。
- EDINETコード
- 提出者名
- 証券コード
正直、会社名である「提出者名」もいりません。
コードさえあれば、情報なんていくらでも引っ張って来れます。
でも、わかりやすいように「提出者名」は残します。
加工は、Pythonで行います。
Pandasを使うので、ライブラリのインストールが必須です。
import pandas as pd FILE_PATH = "EdinetcodeDlInfo.csv" # 5桁の証券コードを4桁に変更(先頭4文字) def scode_edit(val): return val[:4] if __name__ == '__main__': # EDINETコード,提出者名,証券コードを読み込む(合計3列) df = pd.read_csv(FILE_PATH, encoding="cp932", usecols=[0, 6, 11], names=('edinet_code', 'name', 'syoken_code'), dtype={"syoken_code": str}, skiprows=2) # 証券コードが欠損値(NaN)である行を削除 df = df.dropna(how='any', axis=0) # 出力用のデータフレーム作成 df_ex = df.copy() df_ex["security_code"] = df_ex["syoken_code"].apply(scode_edit) # csv出力 df_ex.to_csv("output.csv", index=False)
上記を実行すると、「output.csv」が作成されます。
UTF-8で保存しているので、エクセルなどで開く際には注意です。
output.csvは、次ような内容となります。
それぞれのCSVにおける列名の対応表は以下。
output.csv | EDINETコードリスト |
edinet_code | EDINETコード |
name | 提出者名 |
syoken_code | 証券コード |
security_code |
security_codeは、EDINETコードリストには存在していません。
そして、データ件数は3836件です。
この数字が、現時点での上場企業数と言うことになります。
もちろん、この数字はEDINETコードリストをダウンロードするタイミングで異なります。
新規上場や上場廃止で変化しますからね。
あと、プログラムの内容は見ればわかるレベルです。
強いて言うなら、Pandasでゴニョゴニョしていますぐらいですね。
以上、EDINETコードリストの加工について説明しました。
ここまでやれば、価値ある上場企業リストと言えるでしょう。