pagetakaBlog

最近リフォームと鳥取県日南町の記事多め。写真、PC、ネット等の話題も

東証上場銘柄:「市場・商品区分」は整理コードがないみたい…。

【内国株式だけを残した「東証上場銘柄」(部分)】
【内国株式だけを残した「東証上場銘柄」(部分)】

「東証上場銘柄」には10種類の「市場区分」情報。

東証上場銘柄」(Excel、XLS)を閲覧してみたら、分割・整理すればRDBの負担軽くなるのでは、と思う箇所がいくつかありました。今回は「市場・商品区分」です。

Excel/XLSの表なので、Excelの機能で「重複削除」が簡単にできます。その結果を逆ソートしたら次の順になりました。

  • 出資証券
  • プライム(内国株式)
  • プライム(外国株式)
  • スタンダード(内国株式)
  • スタンダード(外国株式)
  • グロース(内国株式)
  • グロース(外国株式)
  • REIT・ベンチャーファンド・カントリーファンド・インフラファンド
  • PRO Market
  • ETF・ETN

10種類もあるんですね。しかし、区分コードは付定されていませんでした。ということは、自分で勝手につけて管理するしかないけど、市場変更銘柄があったときには「東証上場銘柄」DLしたとき常に文字ベースで差分を見つけ処理せんといかんのね……それって、面倒…。

「内国株式」だけを「東証上場銘柄」から選択する。

ETF、外国株式などを除外し「内国株式」銘柄コードのみ必要データを拾うことにしました。ひとまずの結果が先頭画像です。

Pythonスクリプトは次の通りです。

#東証公開xlsから、銘柄コード、銘柄名、市場区分、業種名など取得
import pandas as pd
#東証サイト https://www.jpx.co.jp/markets/statistics-equities/misc/01.html にLINKがあるxlsが対象
url = 'https://www.jpx.co.jp/markets/statistics-equities/misc/tvdivq0000001vg2-att/data_j.xls'
#pandasでURLにアクセス→取得→ターミナル表示
# df = pd.io.excel.read_excel(url, header = 0,index_col = 1) #0=1行目見出し、1=キー列は2列目(銘柄コード)
df = pd.read_excel(url, header = 0,index_col = 1) #0=1行目見出し、1=キー列は2列目(銘柄コード)
# print(df.index.values[0]) # 1301=index行(銘柄コード)のうち見出し行を除く最初の値
df_dmst_caps = df[df['市場・商品区分'].str.match(".*(内国株式)$")]
print(df_dmst_caps)

あれ、と思ったのは「正規表現」のところです。エスケープする必要ないんですね、Pandasの時は…。
普通だと機能文字の時は「\」を直前においたりするのですがね…。
「".*(内国株式)$"」は、1文字以上あった後、(内国株式)で項目末尾に至る、という条件で正規表現を使っている、と爺は思っています。

東証から得たデータを抽出して選べた結果ですから、市場区分が変更されても影響を受けないことになりますので、コード管理せず、このまま使おうかと思います。

33業種、17業種、規模の3コードを使い、それぞれに紐づけられる具体名はそれぞれテーブルで参照するようにしようかと、妄想しています。さて、どうなりますか…。