파이썬을 이용하여 10년치 재무제표 가져오기 - 6. 배당률, 배당금액, PER, ROA 가져오기
본문 바로가기
카테고리 없음

파이썬을 이용하여 10년치 재무제표 가져오기 - 6. 배당률, 배당금액, PER, ROA 가져오기

by 대충살아볼까 2021. 5. 23.

 

DART에서는 PER,ROA와 배당률, 배당금액을 가져올 수가 없어서 KRX에서 데이터를 가져왔습니다.

 

통계 - KRX | 정보데이터시스템

 

KRX 정보데이터시스템

증권·파생상품의 시장정보(Marketdata), 공매도정보, 투자분석정보(SMILE) 등 한국거래소의 정보데이터를 통합하여 제공 서비스

data.krx.co.kr

 

KRX 사이트에서 정보 데이터 시스템 >> 통계 >> 기본통계 >> 주식 >> 세부안내 >> PER/PBR/배당수익률(개별종목)

에서 다운로드 받을 수 있습니다.

 

 

엑셀파일로 다운로드 받은 데이터를 폴더에 정리 하였습니다. 파일 이름도 연도별로 규칙적으로 만들었습니다.

 

이제 파이썬으로 가져와서 정리하는 코드를 작성해 보겠습니다.

 

모듈은 이렇게 가져오면 됩니다.

 

openpyxl은 엑셀에 최종 분석/저장된 데이터를 좀 더 보기 좋게 만들기 위해 사용했습니다.

 

 

 

 

 

 

 

 

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
import os
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
from openpyxl.styles import Border, Side
import pandas as pd
 
def div(corp_code):
    code = corp_code
    folder = 'C:\\RPA\\DART\\배당'
 
    files = os.listdir(folder)
 
    for num, file in enumerate(files):
        file_path = folder + '\\' + file
        temp_df = pd.read_excel(file_path)
        temp_df['연도'= file[2:6+ '1231'
        temp_df = temp_df.set_index('연도')
        temp_df = temp_df.transpose()
        if num == 0 :
            df = temp_df
        else:
            df = pd.merge(df, temp_df, left_index= True, right_index= True)
 
    df = df.transpose()
    df = df[df['종목코드']==code]
    df = df.transpose()
 
    df = df.drop(['종목코드''대비''등락률'])
    
    return df
 
    corp_name = df.iloc[0][1]
 
    df.to_excel(code + corp_name + '(배당).xlsx')
 
    wb = load_workbook(code + corp_name + '(배당).xlsx')
    ws = wb.worksheets[0]
 
    # 테두리를 지정하기 위해 변수 지정
    box = Border(left=Side(border_style='thin', color='FF000000'),
                 right=Side(border_style='thin', color='FF000000'),
                 top=Side(border_style='thin', color='FF000000'),
                 bottom=Side(border_style='thin', color='FF000000'))
 
    col_fs = 2
    while col_fs < ws.max_column + 1:
        ws.column_dimensions[get_column_letter(col_fs)].width = 20
 
        row_fs = 1
        while row_fs < ws.max_row + 1:
            ws.cell(row_fs, col_fs).number_format = '#,##0'
            ws.cell(row_fs, col_fs).border = box
            row_fs += 1
 
        ws.cell(5, col_fs).number_format = '0.##'
        ws.cell(7, col_fs).number_format = '0.##'
        ws.cell(9, col_fs).number_format = '0.##'
        col_fs += 1
 
    wb.save(code + corp_name + '(배당).xlsx')
    wb.close()
 
div('048260')
 
cs

 

728x90

댓글