[Python]利用金融公共データ2
--GitHubリンク--
先の記事では、CELENIUMを利用して法人登録番号を取得できるシステムを作るというストーリーを紹介しました.
この記事から、ほぼ最終目標の財務諸表データを収集します.
1.企業名の入力
2. dart.fss.or.krを自動的に検索して「法人登録番号」を入力
3.公的データを使用して、会計年度2020年の損益計算書と財務ステータス計算書のデータにアクセスし、出力します.
私はまずデータのプレビューを通じて、私たちが受信するデータがよく見えないことに気づいた.
そこで,まず,数字を英式英語のように見せる関数を作成した.
1000000(百万)
-> 1,000,000
共通データの多くはxml形式です.xmltodictが必要なDict形式でインポートします.
jsonも使用しているので、以下のようにインポートします. S I変数およびS FP変数に割り当てられます. rq.get(S_I).xmlをcontentで受信します. xmltodict.parse()関数を使用してdict形式でグループ化します. サーバに格納される可能性があることを考慮して、文字列として格納します. ですが、jsonフォーマット、jsonを使用します.load()を使用してjsonフォーマットに変換します. 損益計算書データ処理の部分を見れば分かります.
現在、複数の企業から情報を受け取り、Excelで整理分析を行う予定です.
先の記事では、CELENIUMを利用して法人登録番号を取得できるシステムを作るというストーリーを紹介しました.
この記事から、ほぼ最終目標の財務諸表データを収集します.
テスト計画
1.企業名の入力
2. dart.fss.or.krを自動的に検索して「法人登録番号」を入力
3.公的データを使用して、会計年度2020年の損益計算書と財務ステータス計算書のデータにアクセスし、出力します.
かいはつ
数値関数
私はまずデータのプレビューを通じて、私たちが受信するデータがよく見えないことに気づいた.
そこで,まず,数字を英式英語のように見せる関数を作成した.
1000000(百万)
-> 1,000,000
#영미식 단위로 끊어주는 함수
def money(mon):
a = mon
result = str(mon)
finalresult = ""
count = 0
while (a > 0):
a = a//1000
if(a != 0):
count+=1
for i in range(count):
info = -3*count
index = info+i*3
result = result[:index] + ',' + result[index:]
return result
#----------------
#test
money(1320000)
#result = 1,320,000
#----------------
# O(n)
時間の複雑さは...あんな顔をしているデータしょり
共通データの多くはxml形式です.xmltodictが必要なDict形式でインポートします.
$ pip install xmltodict
まず、ネットからデータを読み込みます.したがって、requestが使用されます.jsonも使用しているので、以下のようにインポートします.
import request as rq
import json, xmltodict
損益計算書データ・アドレスおよび財務ステータス・テーブル・データ・アドレスは、S_I_content = rq.get(S_I).content
S_I_dict = xmltodict.parse(S_I_content)
S_I_jsonString = json.dumps(S_I_dict['response']['body']['items']['item'], ensure_ascii=False)
#string -> json
S_I_jsonObj = json.loads(S_I_jsonString)
こうして受け取ったデータを以下のように印刷します.for i in S_I_jsonObj:
print('====',i['acitNm'],'====')
print("당분기:", money(int(i['thqrAcitAmt']))+"원")
print("당기:",money(int(i['crtmAcitAmt']))+"원")
print("전분기:",money(int(i['lsqtAcitAmt']))+"원")
print("전기:",money(int(i['pvtrAcitAmt']))+"원")
print("전전기:",money(int(i['bpvtrAcitAmt']))+"원")
if(i['fnclDcdNm'] == "연결재무제표 [member]"):
print("재무제표 종류:","연결재무제표\n")
elif i['fnclDcdNm'] == "별도재무제표 [member]":
print("재무제표 종류:","별도재무제표\n")
結果の一部は以下の通りである.将来の計画
現在、複数の企業から情報を受け取り、Excelで整理分析を行う予定です.
Reference
この問題について([Python]利用金融公共データ2), 我々は、より多くの情報をここで見つけました https://velog.io/@cosil2b2/Python-금융-공공데이터-활용-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol