본문 바로가기
파이썬과 주식

2. 주가 데이터 다운로드 받기 ( 엑셀 / CSV )

by 에쓰지 2022. 6. 3.
※  늦게라도 "코딩"이란 것을 배워봐야겠다는 사람이 있다면 혹시라도 도움이 될까 해서 나의 경험담을 적어보려 합니다. 

  지난회차에 파이썬 Python을 사용할 환경설정을 위해서 아나콘다 Anaconda를 설치하고 쥬피터 노트북 Jupyter Notebook을 실행시켜 봤습니다.

2022.06.02 - [파이썬과 주식] - 1. 환경 설정 - 아나콘다 Anaconda 쥬피터 노트북 Jupyter Notebook

 

1. 환경 설정 - 아나콘다 Anaconda 쥬피터 노트북 Jupyter Notebook

※  늦게라도 "코딩" 이란 것을 배워봐야 겠다는 사람이 있다면 혹시라도 도움이 될까 해서 나의 경험담을 적어보려 합니다.​    아나콘다 Anaconda를 설치하게 되면 패키지 안의 쥬피터 노트북

pmxsg.tistory.com

 


 

이번 회차에는 주가 데이터를 다운로드 받는 법을 알아보겠습니다.

파이썬 라이브러리를 이용해서 받는 법을 먼저 알아보겠습니다.

파이썬 코드에 익숙하지 않아 사용하기 힘드시다면, 직접 웹사이트에서 주가 데이터를 다운로드 받는 법도 알아보려 합니다.

1. 파이썬을 이용한 주가 데이터 다운로드

 

   요즘은 주가 데이터를 다운로드 받는 사이트도 있고 해서 자료를 얻기가 예전보다는 상대적으로 쉬워졌지만, 한 때 네이버 주식창에서 주가를 일일에 엑셀에 옮겨적거나 붙여넣기를 해서 주가 자료를 만들어 본 경험이 있었습니다. 그러다, 파이썬 공부를 하다가 주가 정보를 코드 몇 개로 다운로드 받을 수 있다는 사실을 알고난 후, " 아! 이런 세상이 있구나 !! " 하는 마음이 들었고 널리 알려 누군가에게 도움이 된다면 좋은 일이겠구나 싶어 이 포스팅을 시작합니다.

포스팅을 해보려고 파이썬으로 주가 데이터 다운로드 하는 법을 찾아보니 몇 개의 라이브러리를 발견하였습니다. 그 내용을 공유해 보고자 합니다. 코딩에서 라이브러리는 "미리 만들어 놓은 코드들의 모임" 정도로 이해하시면 될 것 같습니다.

먼저 파이썬 라이브러리를 소개하자면,

 (1) yfinance 

 (2) pykrx 

(3) pandas-datareader

(4) FinanceData Reader 

등이 있습니다.

웹사이트로는 "한국거래소 | 정보데이터 시스템" 이 있습니다.

http://data.krx.co.kr/contents/MDC/MAIN/main/index.cmd

 

KRX 정보데이터시스템

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

data.krx.co.kr

 

지금부터 지난 1년간의 주가를 엑셀 및 csv 파일로 다운로드 받는 법을 각각 알아보겠습니다.

대상 종목은 시가총액 1위인 삼성전자로 하겠습니다.

출처 : KRX 정보데이터시스템


(1) yfinance

 

우선 쥬피터 노트북을 실행합니다.

위 상태가 되면 코드 입력 준비가 끝났습니다.

전 제목을 "주가 데이터 다운로드"라고 정했습니다.

이제 yfinance 라이브러리를 쥬피터 노트북에 설치하겠습니다.

입력창에 아래의 코드를 입력하고 cntr키+enter키를 칩니다.

!pip install yfinance

설치가 완료되면 숫자 1 ( In[1] )과 함께 설치되었다는 메시지가 입력창 아래에 나타날 것입니다.

위의 경우는 이미 설치되었다는 메시지 입니다.

이제 1년치 주가 데이터를 다운로드 받아보겠습니다.

B를 누르거나 '+' 를 누르면 새 입력창이 나옵니다.

입력창에 아래의 코드를 입력하고 cntr키+enter키를 칩니다.

import yfinance as yf
df = yf.download('005930.KS','2021-06-03','2022-06-03')
df.to_excel("삼성전자.xlsx")
df.to_csv("삼성전자.csv")

실행이 완료되면 숫자 1과 완료메시지가 나타납니다.

그리고 쥬피터 홈페이지를 보면, 다운로드된 파일을 발견할 수 있습니다.

삼성전자.csv
0.02MB
삼성전자.xlsx
0.01MB

 

다시 B를 누르고 "df"를 입력하고 cntr+enter를 치면 아래의 결과가 나타납니다.

데이터는  245 행 6 열의 자료입니다. 

컬럼의 open은 시가, high는 고가, low는 저가, close는 종가, Volume은 거래량입니다.

Adj Close는 조정된 종가인데 조종된 종가는 기업의 행동을 고려한  후에 그 주식의 가치를 반영하기 위해 종가를 수정한다고 합니다. 종가는 원가로 시장이 마감되기 전 마지막으로 거래된 가격의 현금가치를 나타냅니다. 정확히 어디에 쓰임새가 있는지는 더 공부해봐야 할 것 같습니다.

간단히 코드에 대해 설명해 보겠습니다.

▶  ! pip install yfinance  : 라이브러리 설치 코드

      yfinance 는 yahoo finance의 약어로 yahoo에서 제공하는 주가 정보를 가져올 수 있는 라이브러리 입니다.

      웹사이트 : https://pypi.org/project/yfinance/

 

yfinance

Download market data from Yahoo! Finance API

pypi.org

 

▶ import yfinance as yf  : yf라는 이름으로 yfinance 라이브러리를 사용하겠다는 코드 입니다.

▶ df = yf.download( '005930.KS', '2021-06-03','2022-06-03') : df 라는 이름으로 데이터를 다운로드한다는 코드 입니다.

   "df" 라는 이름은 임의로 정해진 이름입니다. 자신이 원하는 이름을 사용하시면 됩니다.

  저는 DataFrame의 약어로 df로 정했습니다. 

  "yf.download" 는 일종의 함수인데 자연어로 해석하면 yfinance 라이브러리 안에 있는 다운로드 프로그램을 사용하겠다고 알리는 것입니다. 앞서 라이브러리를 "미리 만들어놓은 코드들의 모임"이라고 했듯 download라는 뒤에는 다운로드 하는 복잡한 코드가 모여있다고 이해하시면 됩니다. 이것은 일종의 함수입니다.

  다만 이를 사용하려면 괄호 안에 "종목코드","시작일","종료일" 을 위 코드 양식으로 입력해야 합니다.

  "005930.KS"에서 005930은 삼성전자의 종목코드 입니다. KS는 나라를 나타내는 코드가 들어가는 자리입니다. 여기서는 한국이죠. yfinance는 한국 뿐만 아니라 미국을 비롯한 외국 주식도 다운로드 가능합니다. 자세한 사용법은 위 웹사이트를 참고하시기 바랍니다.

   이 코드를 자연어로 번역하면, " df라는 이름으로 yfinance의 download 함수를 사용해서 종목코드 005930인 한국의 삼성전자 2021년 6월3일부터 2022년 6월3일까지의 주가데이터를 다운로드한다. " 정도가 될 듯 합니다.

▶ df.to_excel("삼성전자.xlsx") : df에 다운로드된 자료를 "삼성전자.xlsx" 이름의 엑셀파일로 저장하라라는 코드입니다.
     df.to_csv("삼성전자.csv") : df에 다운로드된 자료를 "삼성전자.csv" 이름의 csv파일로 저장하라라는 코드입니다.

 


(2) pykrx

 

pykrx 라이브러리를 쓰려면 아래와 같이 설치합니다.

설치가 완료되면 아래의 코드를 입력합니다.

from pykrx import stock
df = stock.get_market_ohlcv("20210603","20220603","005930")
df.to_excel("삼성전자1.xlsx")
df.to_csv("삼성전자1.csv")
df

입력이 완료되면 cntr+enter를 치면 아래의 결과가 나옵니다.

삼성전자1.csv
0.01MB
삼성전자1.xlsx
0.01MB

앞서 라이브러리와 다른 부분 위주로 설명해 보겠습니다.

▶  ! pip install pykrx  : 라이브러리 설치 코드

  pykrx 웹사이트는 Naver와 KRX에서 주가정보를 스크래핑하는 모듈이라고 설명하고 있습니다.

웹사이트 :  https://github.com/sharebook-kr/pykrx

 

GitHub - sharebook-kr/pykrx: KRX 주식 정보 스크래핑

KRX 주식 정보 스크래핑. Contribute to sharebook-kr/pykrx development by creating an account on GitHub.

github.com

from pykrx import stock : pykrx의 stock 모듈을 사용하겠다는 의미입니다.

df = stock.get_market_ohlcv("20210603","20220603","005930")

 "stock.get_market_ohlcv" 은 stock 모듈안의 get_market_ohlcv 라는 함수를 쓰겠다는 것입니다. 앞서 download란 이름의 함수와 같은 역할을 하는데 이름 짓기를 get_market_ohlcv로 한 것입니다.

("시작일","종료일","종목코드" ) 순으로 입력합니다. yfinance를 사용할 때와 날짜 입력 방식이 조금 다릅니다. 유의해서 쓰시면 됩니다. 종목코드에서 나라코드가 빠져 있습니다.

▶ df.to_excel("삼성전자1.xlsx") , df.to_csv("삼성전자1.csv") : 앞서 다운로드 파일과 구분하기 위해 이름에 1만 붙였습니다.

pykrx는 기본적으로 한글로 표기되어 있습니다. 컬럼은 시가,고가,저가,종가, 거래량 등 5개 입니다.


(3) pandas-datareader

pandas-datareader 라이브러리를 쓰려면 아래코드를 사용합니다.

! pip install pandas-datareader

설치가 완료되면 아래의 코드를 입력합니다.

import pandas_datareader as pdr
df = pdr.naver.NaverDailyReader('005930', start='20210603' , end='20220603').read()
df.to_excel("삼성전자2.xlsx")
df.to_csv("삼성전자2.csv")
df

결과는 아래와 같이 나옵니다.

삼성전자2.csv
0.01MB
삼성전자2.xlsx
0.01MB

앞선 라이브러리와 달라진 것을 설명해 보겠습니다.

▶  ! pip install pandas-datareader  : 라이브러리 설치 코드

웹사이트 : https://pandas-datareader.readthedocs.io/en/latest/index.html#

 

pandas-datareader — pandas-datareader 0.10.0 documentation

Quick Start Install using pip pip install pandas-datareader and then import and use one of the data readers. This example reads 5-years of 10-year constant maturity yields on U.S. government bonds. import pandas_datareader as pdr pdr.get_data_fred('GS10')

pandas-datareader.readthedocs.io

▶ import pandas_datareader as pdr : pdr라는 이름으로 pandas-datareader 라이브러리를 사용하겠다는 코드 입니다.

▶ df = pdr.naver.NaverDailyReader('005930', start='20210603' , end='20220603').read()

 : 앞선 라이브러리와 다운로드 함수 형식이 조금 또 다릅니다.

  "naver.NaverDailyReader" 라는 이름에서 바로 알 수 있듯이 네이버의 증시자료를 가져오는 함수입니다.

 ("종목코드", start='시작일', end='종료일') 순으로 입력하고 마지막에 "read()"를 더합니다. 


(4) FinanceDataReader

다른 라이브러리와 같은 방법으로 아래의 코드로 설치합니다.

! pip install finance-datareader

설치가 완료되면 아래의 코드를 입력합니다.

import FinanceDataReader as fdr
df = fdr.DataReader('005930','2021-06-03','2022-06-03')
df.to_excel("삼성전자3.xlsx")
df.to_csv("삼성전자3.csv")
df

결과는 아래와 같이 나옵니다.

삼성전자3.csv
0.02MB
삼성전자3.xlsx
0.02MB


앞선 라이브러리와 달라진 것을 설명해 보겠습니다.

▶  ! pip install finance-datareader  : 라이브러리 설치 코드

웹사이트 : https://github.com/FinanceData/FinanceDataReader

 

GitHub - FinanceData/FinanceDataReader: Financial data reader

Financial data reader. Contribute to FinanceData/FinanceDataReader development by creating an account on GitHub.

github.com

 

import FinanceDataReader as fdr : fdr라는 이름으로 FinanceDataReader 라이브러리를 사용하겠다는 코드 입니다.

 df = fdr.DataReader( '005930', '2021-06-03', '2022-06-03')

 : 앞선 라이브러리와 다운로드 함수 형식이 조금 또 다릅니다.

 ('종목코드','시작일','종료일') 순이로 입력하면 됩니다. 이번 함수 이름은 DataReader 입니다.


이상 파이썬으로 주가 데이터를 다운받는 라이브러리에 대해서 알아봤습니다.

아마도 더 많은 라이브러리가 있겠지만, 전부 다 알 필요는 없습니다. 위의 4가지 중 편한 것으로 하나 골라서 사용하시면 됩니다. 4가지 모두 다운로드 받는  코드는 유사하기 때문에 어느 것을 선택해도 사용하시는 데에 무리가 없을 것입니다.


2. 웹사이트에서 주가 데이터 다운로드

 

파이썬을 다루기가 불편하시면, 직접 웹사이트에 방문해서 직접 주가 데이터를 다운로드 받을 수 있습니다.

http://data.krx.co.kr/contents/MDC/MAIN/main/index.cmd

 

KRX 정보데이터시스템

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

data.krx.co.kr

 

처음에 소개한 KRX 정보데이터 시스템입니다. 한국거래소의 정보데이터를 통합하여 서비스를 제공합니다.

위와 같이 삼성전자의 주가 데이터를 다운받아 보겠습니다.

먼저, 웹사이트를 방문하여 종목검색에 "삼성전자"를 입력하고 탐색을 시작합니다.


개별종목 종합정보에서 일자별 시세 오른쪽 끝 "+"를 클릭합니다.


개별종목 시세추이 탭에서 일자별 시세 오른쪽 끝  다운로드 표시를 클릭합니다.

조회기간을 1년으로 설정하고 Excel이나 CSV를 클릭하면 다운로드가 시작됩니다.

data_5548_20220603.csv
0.03MB
data_5543_20220603.xlsx
0.02MB

 



 

이상으로 파이썬 코드를 이용해서 주가 데이터 다운로드 하는 방법과 웹사이트에 직접가서 주가 데이터를 다운로드 하는 방법을 알아봤습니다. 어떤 방법이 되었건 본인이 사용하기 편한 것으로 사용하시면 됩니다.

 

댓글