EDINETコードリストを読み込む【csv】

EDINETコードリストは、csvモジュールの csv.reader() で読み込むこともできます。こちらは単にリスト(list)や辞書(dict)が欲しいときに良く使います。

パンダスのデータフレームもリストや辞書として使えるのですが、パイソン標準の方がより簡単に扱えるのです。どちらにもメリットがあります。

PythonのcsvでEDINETコードリストを読み込む

リストにする

上場企業だけのリストを作成する例です。ついでに、必要な列だけ選んでいます。

import csv
def get_edinet_codes(file):
    """上場企業だけのEDINETコードリスト取得"""
    datas = []
    with open(file, mode='r', encoding='cp932', newline='') as f:
        # 表計算ソフトで0始まりの列番号を調べておく
        # [0]EDINETコード [2]上場区分 [6]提出者名
        # [10]提出者業種 [11]証券コード [12]提出者法人番号

        # 1行目は使わないので読み飛ばす
        next(csv.reader(f))

        # 2行目(ラベル行)も読み飛ばす
        next(csv.reader(f))

        # 3行目から取得
        for c in csv.reader(f):
            if c[2] == '上場':
                datas.append([
                    c[0], c[2], c[6], c[10], c[11], c[12]])
    return datas

 

辞書にする

辞書が欲しい時もあります。グラフのキャプションに社名や読みを追加したい時です。「EDINETコードや証券コード」をキーにして「社名や読み」のリストを追加します。

オーダード・ディクト collections.OrderedDict() を使うと、リストのようにキーの順序を保つことができます。私はデバッグを楽にするために使っています。もちろん、普通の辞書(datas={})でも大丈夫です。

from collections import OrderedDict
import csv
def get_edinet_codes_dict(file):
    """上場企業だけのEDINETコード辞書取得"""
    datas = OrderedDict()
    with open(file, mode='r', encoding='cp932', newline='') as f:
        # 表計算ソフトで0始まりの列番号を調べておく
        # [0]EDINETコード [2]上場区分 [6]提出者名
        # [10]提出者業種 [11]証券コード [12]提出者法人番号

        # 1行目は使わないので読み飛ばす
        next(csv.reader(f))

        # 2行目(ラベル行)も読み飛ばす
        next(csv.reader(f))

        # 3行目から取得
        for c in csv.reader(f):
            if c[2] == '上場':
                datas.update({
                    c[0]:[c[2], c[6], c[10], c[11], c[12]]})
    return datas
タイトルとURLをコピーしました