2021.05.15 - [파이썬/Python Project] - 파이썬을 이용하여 10년치 재무제표 가져오기 - 3. 손익계산서, 현금흐름표 가져오기
재무상태표, 손익계산서, 현금흐름표를 가져올 수 있는 함수도 만들었습니다.
각 항목 코드(Cocept Code)를 가져올때 옆의 칼럼에 있는 한글 항목도 함께 가져와서 item_list에 저장했습니다.
이걸 그대로 total_df에 추가하니 새로 추가된 ROE와 ROA 때문에 행개수가 맞지않아 에러가 발생하네요.
그래서 total_df의 행 개수와 item_list의 항목개수 차이많큼 item_list에 '0'을 임의로 넣었습니다.
결과가 제대로 나왔네요.
몇몇 데이터를 가지고 test 해 봤는데, 잘 나옵니다. (그래도 혹시나 데이터가 안나오는 기업이 있을수도 있겠다는 생각이 드네요)
전체 코드는 아래와 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
from openpyxl import load_workbook
import pandas as pd
# Company that you find
file = 'fs_samsung.xlsx'
wb = load_workbook(file)
item_list = []
# Data를 가져올 함수 설정
def get_data(r, ws, list):
c = 2
while ws.cell(2, c).value != None:
y = ws.cell(1, c).value
if y != None and y[:1] == '2':
for i in range(10):
list.append(ws.cell(r, c + i).value)
break
c += 1
# 제무상태표, 손익계산서, 현금흐름을 가져올 수 있는 함수설정
def get_fs_data(ws, fs_items, df_list):
for fs_item in fs_items:
temp_list = []
r = 4
while ws.cell(r,2).value != None:
if ws.cell(r,2).value == fs_item:
key = ws.cell(r, 2).value
item = ws.cell(r, 3).value
item_list.append(item)
get_data(r, ws, temp_list)
r += 1
df = pd.DataFrame(temp_list,columns=[key], index=y_list)
df_list.append(df)
# 재무상태표를 통해 년도를 List로 만들기
y_list = []
get_data(1, wb['Data_bs'], y_list)
# 각 데이터가 담긴 Dataframe 리스트를 담을 변수 지정
df_list = []
# 재무상태표 Data 가져오기
bs_items = ['ifrs-full_Assets', 'ifrs-full_CurrentAssets', 'ifrs-full_CashAndCashEquivalents',
'dart_ShortTermTradeReceivable', 'ifrs-full_Inventories','ifrs-full_PropertyPlantAndEquipment',
'ifrs-full_Equity', 'ifrs-full_Liabilities', 'ifrs-full_CurrentAssets']
get_fs_data(wb['Data_bs'], bs_items, df_list)
# 손익계산서 Data 가져오기
is_items = ['ifrs-full_Revenue', 'ifrs-full_ProfitLoss']
get_fs_data(wb['Data_is'], is_items, df_list)
# 현금흐름 Data 가져오기
cf_items = ['ifrs-full_CashFlowsFromUsedInOperatingActivities']
get_fs_data(wb['Data_cf'], cf_items, df_list)
# 각 데이터프레임 합치기
total_df = pd.concat(df_list, axis=1)
# 합쳐진 데이터 프레임 행/열 바꾸기
total_df = total_df.transpose()
total_df.loc['ROA'] = total_df.loc['ifrs-full_ProfitLoss']/total_df.loc['ifrs-full_Assets']
total_df.loc['ROE'] = total_df.loc['ifrs-full_ProfitLoss']/total_df.loc['ifrs-full_Equity']
#컬럼과 항목 List의 길이차이
dif_len = len(total_df.iloc[:,[1]]) - len(item_list)
for dif in range(dif_len):
item_list.append(0)
total_df['항목'] = item_list
col1 = total_df.columns[0:len(total_df.columns)-1].to_list()
col2 = total_df.columns[-1:].to_list()
total_df = total_df[col2 + col1]
print(total_df)
total_df.to_excel('재무상태표.xlsx')
|
cs |
코드파일을 아래와 같이 공유하오니 필요하신 분들은 다운로드 받으시기 바랍니다.
※ 저는 프로그램을 전공하거나 따로 배우지 않았습니다. 또한 IT분야에서 근무하고 있지도 않습니다. 개인적인 취미로 파이썬을 배우고 있으며, 지극히 개인적인 기록을 위한 수단으로 포스트를 하였습니다. 혹시나 제가 기록한 포스트대로 코딩을 하시다가 실행이 제대로 되지 않더라도 제가 답변할 능력이나 시간이 되지 않으니 참고하시기 바랍니다.
CAGR(연복리 수익률) 30%를 목표로 하는 파이썬 퀀트투자법이 궁금하시다면 아래 포스트를 클릭해 보시기 바랍니다.
2021.11.21 - [집구석 강의/파이썬 퀀트투자 쉽게하기] - 파이썬 퀀트투자 쉽게하기 - 1. 들어가는 글
'파이썬(Python) > 10년치 재무제표 가져오기' 카테고리의 다른 글
파이썬을 이용하여 10년치 재무제표 가져오기 - 5. 재무비율 추가하기 (2) | 2021.05.17 |
---|---|
파이썬을 이용하여 10년치 재무제표 가져오기 - 3. 손익계산서, 현금흐름표 가져오기 (0) | 2021.05.15 |
파이썬을 이용하여 10년치 재무제표 가져오기 - 2. 재무상태표 가져오기 (12) | 2021.05.14 |
파이썬을 이용하여 10년치 재무제표 가져오기 - 1. Dart(전자공시)에서 10년 재무제표 데이터 가져오기 (1) | 2021.05.13 |
댓글