본문 바로가기
개발 프로젝트/Python

Python 라이브러리를 활용한 코스피/코스닥 주가 데이터 수집

by BuyAndPray 2020. 11. 29.
반응형

* 주피터 노트북에서 개발을 진행하였습니다.

 

원자재 가격과 주가와의 상관관계 분석을 위해 지난 포스팅까지는 웹 크롤링을 활용해 원자재 가격 데이터를 수집하는 방법에 대해서 알아봤다. 이번 포스팅에서는 Python FinanceDataReader 라이브러리를 활용해서 코스피/코스닥 주가 데이터를 수집해보겠다.

 

FinanceDataReader 

FinanceDataReader는 한국, 미국 글로벌 시장의 금융상품 가격 데이터(주식, 지수, 환율, 선물 등)와 종목 리스팅 등 금융 데이터 수집과 분석을 위한 오픈소스 라이브러리이다. 

 

FinanceDataReader

기존에 한국 주식시장 주가 데이터를 가져오기 위해서는 네이버나 야후 Finance를 크롤링하거나 증권사에서 제공하는 api를 활용해야만 했다. 사실 두 방법 모두 어려운 것은 아니나 시간이 많이 걸리기도 하고, 무엇보다도 귀찮다. 또 데이터 양이 많아서 별도의 csv 파일이나 db에 저장해야만 했는데, FinanceDataReader는 결과를 pandas의 DataFrame 자료형으로 제공하기 때문에 추후 처리하기에 편리하다. 이런 좋은 라이브러리를 무료로 사용할 수 있는 것에 정말 감사할 따름이다.

 

FinanceDataReader 라이브러리의 사용법은 FinanceDataReader 사용자 안내서(링크)를 참고하면 된다.

 

 

코스피/코스닥 주가 데이터 수집하기

먼저 FinanceDataReader 라이브러리를 pip install을 활용해 설치한다. (iPython 구글 colab을 활용함)

 

! pip install finance-datareader

 

그런 뒤 KOSPI, KOSDAQ 종목 리스트 중 2010년 이전에 상장되어있는 종목을 추린 뒤 Symbol, Market, Name, Sector, Industry, ListingDate 행만 따로 저장한다.

 

import FinanceDataReader as fdr

krx = fdr.StockListing('KRX')

columns = ['Symbol', 'Market', 'Name', 'Sector', 'Industry','ListingDate']
marketFilter = (krx['Market'] == 'KOSPI') | (krx['Market'] == 'KOSDAQ')
dateFilter = (krx['ListingDate'] <= '2010-01-01')
krx = krx[marketFilter & dateFilter][columns]
krx

특정 행만 추출한 결과

 

이제 특정 종목의 2010년부터 주가 데이터를 가져와야 한다. 여기서 문제는 FinanceDataReader에서 제공하는 주가 데이터는 아래와 같이 일별로 주어진다. 하지만 원자재 가격 데이터는 월별 가격 데이터이기 때문에 주가 데이터도 마찬가지로 월별로 추출해야 한다. 

제공되는 주가 데이터

월별 가격을 추출하기 위해서는 먼저 Date column이 index로 잡혀있기 때문에 reset_index()를 활용해 인덱스를 리셋해주는 것이 편하고, groupby()를 활용해서 각 월별 평균 종가 데이터를 구하면 된다. 이 과정을 모든 Symbol(종목코드)에 대해서 해주면 되는데 아래의 예시는 3S를 기준으로만 작성되었다.

 

# 3S(060310) 2010년 1월 1일부터 데이터
df = fdr.DataReader('060310', '2010-01-01').reset_index()

df = df.groupby([df['Date'].dt.year, df['Date'].dt.month]).mean()['Close']
df

3S의 월별 평균 종가 데이터

 

다음 포스팅에서는 확보한 원자재 가격 데이터와 주가 데이터를 활용해 원자재 가격과 주가와의 상관관계를 알아보겠다.

 

 

원자재 가격과 주가와의 상관관계 분석 시리즈

반응형

댓글