oryou-sanのブログ

備忘録です

Edinet APIを使ってみる(書類一覧API編 その2)

はじめに

Edinet APIPythonで使ってみる。
書類一覧APIと書類取得APIの2つがあるが、この記事では書類一覧APIについて扱う。

前回の記事でとりあえず出力をPandas DataFrameに変換するところまで進めたので、
本記事ではもう少し実用的な内容を扱う。

results(提出書類ごとのサマリー情報)の期間取得

実際の運用では、特定の日付でなく期間の間に提出された書類を確認することが多い(と思う)。
なので、resultsを期間取得できるようにコードを書いてみる。

以下では2021/4/1~2021/6/30の期間でresultsを取得し、pandas DataFrameで縦結合している。
日付の扱いにはdatetimeモジュールを使用し、変数deltaには期間の日数を代入。

import datetime as dt
import pandas as pd
import requests
import json

date_from = dt.date(2021, 4, 1)
date_to = dt.date(2021, 6, 30)

delta = (date_to - date_from).days

df_rslt = pd.DataFrame()

for i in range(delta+1):
    date = date_from + dt.timedelta(i)

    res = requests.get('https://disclosure.edinet-fsa.go.jp/api/v1/documents.json?date='+str(date)+'&type=2')
    res_txt = res.text
    res_dict = json.loads(res_txt)
    res_rslt = res_dict['results']
    df_date = pd.DataFrame(res_rslt)
    df_date['submitDate'] = str(date)
    df_rslt = pd.concat([df_rslt,df_date])

df_rslt.set_index(['seqNumber','submitDate'],inplace = True)
df_rslt

出力はこんな感じ。

f:id:oryou-san:20220319092358p:plain

特定の条件に該当する書類のみを抽出

このままだと選択期間に提出されたすべての書類がDataFrame上に存在することになるので、
分析に使えそうな以下の条件で抽出をかけてみる。

・決算日:2021/3/31
・提出書類:有価証券報告書
・対象企業:上場会社

有価証券報告書の提出期限は決算日後3ヶ月なので、抽出期間は上記のままでOK。


df_ar = df_rslt[(df_rslt['edinetCode'].isnull() == False) 
                & (df_rslt['formCode'] == '030000')   #様式コード:有価証券報告書
                & (df_rslt['docTypeCode'] == '120')   #書類種別コード:有価証券報告書
                & (df_rslt['ordinanceCode'] == '010')   #府令コード:企業内容等の開示に関する内閣府令
                & (df_rslt['periodEnd'] == '2021-03-31')   #決算日:2021/03/31
                & (df_rslt['secCode'].notnull())]   #証券コード:nullでない→上場企業

f:id:oryou-san:20220319094827p:plain

とりあえず今回はここまで。