No.012 企業の決算書提出情報をPythonを使ってEDINETから取得
1.今回の目的
Pythonを使ってEDINET APIから情報を取得し、pandasのデータフレームで表示します。
2.リファレンス
こちらのサイトを参考に行いました。
Pythonから金融庁のEDINET APIを使って有価証券報告書を取得する (segakuin.com)
【Python】企業の決算情報をEDINET APIで取得する | 無次元日記 (non-dimension.com)
PythonのRequestsモジュールの使い方【初心者向け】現役エンジニアが解説 | TechAcademyマガジン
3.Python (Jupyter Notebook)
Pandasライブラリ, requestおよびjsonモジュールを読み込みます。
import pandas as pd
import requests
import json
urlにエンドポイントurlを格納します。
urlはAPI仕様書のp6に記載があります。
paramsにパラメータを設定します。今回は日付を2022-06-27とし、type2を設定します(仕様書のp7参照)。
requestsモジュールのgetメソッドでAPIを呼び出します。
# 書類一覧APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"
# 書類一覧APIのリクエストパラメータ
params = {
"date" : '2022-06-27',
"type" : 2
}
# 書類一覧APIの呼び出し
res = requests.get(url, params=params, verify=False)
# レスポンス(JSON)の表示
print(res.text)
提出書類組織の識別子は"results"です(API仕様書のp13参照)この中に、提出書類が繰り返しで含まれています。中身をjson形式でtextにし、resultsの内容を繰り返し処理で表示してみます(docID, docDescription,filenameのみ)。
#APIの結果をjson形式に変換
res_text = json.loads(res.text)
#res_text内のresultsの内容を取得
results= res_text["results"]
#resultsの中身(docID, docDescription, filerName)を表示
for result in results:
print(result['docID'], result['docDescription'],result['filerName'])
今回は有価証券報告書のみに絞ってみたいと思います。
kessanという空のリストを作って'有価証券報告書'が含まれるdocに絞ります。
kessan = []
for result in results:
if result['docDescription'] is not None:
if '有価証券報告書' in result['docDescription']:
print(result['docID'], result['docDescription'],result['filerName'])
kessan.append(result)
dfに格納して、件数を見ると335件あるようです。
df = pd.DataFrame(kessan)
df
len(df)
最初の3行だけ見てみます。
df[:3]
27列もあって見にくいので、columnsを絞ります。
columns = [
'filerName','secCode','docID', 'docTypeCode', 'periodStart',
'periodEnd', 'submitDateTime', 'docDescription'
]
df2=df[columns]
#df2[:3]
df2
以上です。
有価証券報告書の提出リストを作成することができました。