• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    해결됨

5.1 '업종 테마주 수집'시 FinanceDataReader의 KRX 종목명이 모두 영문으로 변경된 것 같습니다.

22.01.08 21:33 작성 조회수 271

1

안녕하세요.

강의 덕분에 즐겁게 보내고 있는 수강생입니다^^;

다시 한 번 강의 만들어주셔서 감사하다는 말씀을 먼저 드립니다.

 

현재 '5.1 업종 테마주 수집' 강의 중 '1.3 tqdm은?'을 강의를 보며 공부하고 있는데요.

제가 실행해보니 get_item_info 함수를 통해 종목코드 값을 result 변수로 저장하는 과정에서 문제가 발생했습니다.

 

원인을 찾아보니,

제약업종 정보를 수집한 raw와 FinanceDataReader를 통해 만들어 둔 df_item_code_name을

merge해서 만든 df에 자료가 입력되어 있지 않았습니다.

 

merge 당시 문제가 있었던 것으로 보였는데,

확인해보니 FinanceDataReader로 불러온 Name 컬럼의 종목명이 모두 영문으로 변경되어 있는 게

문제의 원인인 것 같습니다.

 

일단 KRX 정보데이터시스템 홈페이지로 들어가서 csv파일로 상장기업 종목명 및 종목코드를 다운로드해서,

선생님께서 알려주신대로 필요한 컬럼들만 추려내서 해당 데이터프레임과 raw를 다시 merge하니 작동하는 것 같네요.

 

혹시 FinanceDataReader를 이용해 원래대로 진행할 수 있는 방법이나,

좀더 효율적으로 종목명과 종목코드 정보를 수집하는 방법이 있을까요?

 

감사합니다:)

답변 1

답변을 작성해보세요.

1

안녕하세요.

즐겁게 수강하고 있으시다니 감사합니다! 종목명이 영어로 나와서 많이 불편하셨을텐데 불편을 드려 죄송합니다.

해당 수업은 실시간으로 한국거래소에서 FinanceDataReader 라는 라이브러리를 통해 데이터를 받아오고 있습니다.

아래 링크에 있는 라이브러리의 소스코드가 KRX 전체 종목을 가져오는 소스코드입니다.

[FinanceDataReader/listing.py at master · FinanceData/FinanceDataReader](https://github.com/FinanceData/FinanceDataReader/blob/master/krx/listing.py)

이 때, 전체 상장종목과 거래할 수 있는 ETF 등의 종목도 함께 가져오게 되는데,

FinanceDataReader 에서는 코스피, 코스닥, 코넥스 정보가 있는 엑셀파일과 금융상품 정보가 있는 JSON 데이터를 가져와서 병합하는 형태로 데이터를 제공하고 있습니다.

그런데 최근 JSON 데이터의 종목명이 영문으로 변경되어 제공되고 있음을 확인했습니다.

그래서 아래의 엑셀 데이터를 read_html 로 읽어오게 되면 한글로 된 종목명을 받아서 분석해 보실 수 있습니다.

해당 내용은 좀 더 확인해 본 후에 수업에 업데이트 하겠습니다.

 

import pandas as pd

url = 'http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13'
df_listing = pd.read_html(url, header=0)[0]
cols_ren = {'회사명':'Name', '종목코드':'Symbol', '업종':'Sector', '주요제품':'Industry', 
                    '상장일':'ListingDate', '결산월':'SettleMonth',  '대표자명':'Representative', 
                    '홈페이지':'HomePage', '지역':'Region', }
df = df_listing.rename(columns = cols_ren)
df['Symbol'] = df['Symbol'].apply(lambda x: '{:06d}'.format(x))
df['ListingDate'] = pd.to_datetime(df['ListingDate'])
df

 

감사합니다 :)