Program Language/Python

(python) 코스피 종목 데이터 가져오기

야곰야곰+책벌레 2023. 11. 28. 09:34
728x90
반응형
import pandas as pd
import numpy as np
import FinanceDataReader as fdr
import xlwings as xw
import os

base_dir = os.getcwd()
df_code = pd.read_csv('종목코드.csv')
df_code = df_code[df_code['검색'] == 1]
df_code = df_code.reset_index()

print(df_code)

date_s = '2021-10-01'
date_e = '2022-10-30'

tbl_list = []

for i in range(len(df_code)) :
    # csv로 읽어서 그런지 숫자 첫자리의 0이 계속 삭제되어서 강제로 채웠다.
    # 종목코드는 6자리니까 강제로 맞췄다.
    code_indi = format(df_code.loc[i, '종목코드'], '06')
    
    name = df_code.loc[i, '회사명']
    print(code_indi, name)
    df_code_indi = fdr.DataReader(code_indi, date_s, date_e)
    
    df_kospi = fdr.DataReader('KS11', date_s, date_e)
    df_c_price = df_code_indi['Change']
    df_kospi_c_price = df_kospi['Change']
    
    #조인
    df_join = pd.merge(df_c_price, df_kospi_c_price, how='left', left_on=['Date'], right_on=['Date'],suffixes=('_개별', '_코스피지수'))
    
    #베타
    cov_indi_kospi = df_join.cov().iloc[0]['Change_코스피지수']
    var_kospi = df_join['Change_코스피지수'].var()
    beta = cov_indi_kospi / var_kospi
    
    tbl_list = tbl_list + [[code_indi, name, date_s, date_e, beta]]
    df_beta = pd.DataFrame.from_records(tbl_list, columns=['개별종목코드', '개별종목명', '시작일자', '종료일자', '베타'])
    
    #주가 및 변동 history 테이블 구하기
    df_c_fluc_join = pd.merge(df_code_indi, df_kospi, how='left', left_on=['Date'], right_on=['Date'], suffixes=('_{}'.format(name), '_코스피지수'))
    
    #주가 및 변동 history 테이블에서 필요한 컬럼 선택
    df_c_fluc_join = df_c_fluc_join.iloc[:,[3,6,5,11]]
    
    #엑셀출력
    xw.view(df_c_fluc_join)
    
xw.view(df_beta)
728x90
반응형