본문 바로가기

정보/프로그래밍

[Python] pykrx 증권 데이터 수집 라이브러리 기초 사용법

오늘은 증권 데이터 수집 라이브러리인

yfinance, pykrx, FinanceDataReader 라이브러리 중 pykrx에 대해 다뤄보도록 하겠습니다.

 

다른 증권 데이터 수집 라이브러리 설명을 보고 싶으면 아래 링크를 클릭하시면 됩니다.

 

yfinance : https://bigdata-doctrine.tistory.com/6

 

[Python] yfinance 증권 데이터 수집 라이브러리 기초 사용법

세 가지 증권 데이터 수집 라이브러리를 비교하고 사용법을 익히는 시간을 가져보려 합니다. 바로 yfinance, pykrx, FinanceDataReader입니다. 오늘은 그중에서 yfinance에 대해 다뤄보려 합니다. 파이썬에

bigdata-doctrine.tistory.com

FinanceDataReader : https://bigdata-doctrine.tistory.com/8

 

[Python] FinanceDataReader 증권 데이터 수집 라이브러리 기초 사용법

오늘은 증권 데이터 수집 라이브러리 yfinance, pykrx, FinanceDataReader 중 pykrx에 대해 다뤄보도록 하겠습니다. 다른 증권 데이터 수집 라이브러리 설명을 보고 싶으면 아래 링크를 클릭하시면 됩니다.

bigdata-doctrine.tistory.com

 

 

pykrx 특징, 사용법


 

pykrx는 네이버 금융 사이트와 krx 사이트에서 크롤링하여 데이터를 수집합니다.

 

한국 증권 사이트에서 데이터를 수집하기 때문에 yfinance에서 수집한 국내 주식 시세보다 신뢰성이 높습니다.

 

하지만 yfinance와는 달리 국내 주식 데이터만 수집할 수 있습니다.

 

기본적인 사용법은 다음과 같습니다.

 

pip install pykrx

from pykrx import stock

# tickers = stock.get_market_ticker_list(조회일자(YYYYmmdd) [,market=조회할 시장(KOSPI, KOSDAQ, ALL])
# name = get_market_ticker_name(심볼 [,market=조회할 시장(KOSPI, KOSDAQ, ALL])
# ohlcv = stock.stock.get_market_ohlcv(조회일자(YYYYmmdd) [,앞에 시작일을 넣었다면 종료일] [,심볼] )

# 예시
tickers = stock.get_market_ticker_list("20220222", market="KOSPI") # 코스피 종목 리스트
name = stock.get_market_ticker_name("005930") # 심볼 -> 기업 이름
ohlcv = stock.get_market_ohlcv("20220222", market="KOSPI") # 특정일 코스피 종목들의 OHLCV
ohlcv2 = stock.get_market_ohlcv("20220203", "20220222", "005930") # 특정기간 특정 종목의 OHLCV
  1. "get_market_ticker_list" 메서드는 주식 종목들을 가져옵니다.
  2. "get_market_ticker_name" 메서드는 심볼(티커)을 받으면 기업 이름을 가져옵니다.
  3. "get_market_ohlcv" 메서드는 OHLCV 주식 시세를 가져옵니다. 

tickers의 출력결과는 다음과 같습니다.

tickers 출력 결과

출력 결과가 너무 길어 밑에는 생략하였습니다.

 

코스피 종목들의 심볼 리스트를 출력합니다.

 

 

name의 출력결과는 다음과 같습니다.

name 출력결과

심볼이 "005930"인 기업의 이름을 출력합니다.

 

 

ohlcv의 출력결과는 다음과 같습니다.

ohlcv 출력 결과

2022년 2월 22일의 모든 코스피 종목들의 티커(심볼), 시가, 고가, 저가, 종가, 거래량, 거래대금, 등락률을 출력합니다.

 

 

ohlcv2의 출력결과는 다음과 같습니다.

ohlcv2 출력 결과

삼성전자의 2022년 2월 3일부터 2022년 2월 22일까지의 시가, 고가, 저가, 종가, 거래량을 출력합니다.

 

 

이처럼 pykrx는 국내 주식의 시세를 빠르고 정확하게 수집하는 것이 가능합니다.

 

하지만 해외 주식의 데이터를 수집할 수 없다는 점 이외에 또 다른 단점이 있는데

PER, PBR, 배당수익률과 같은 지표가 부정확하다는 점입니다.

 

pykrx로 PER, PBR, 배당수익률과 같은 지표를 수집하는 방법은 다음과 같습니다.

 

# df = stock.get_market_fundamental(시작일(YYYYmmdd), 종료일(YYYYmmdd), 심볼)

# 예시
df = stock.get_market_fundamental("20220221", "20220222", "035720")

df
  • "get_market_fundamental" 메서드는 주식 지표들을 가져옵니다.

 

df의 출력결과는 다음과 같습니다.

df 출력 결과

카카오의 2022년 2월 21일, 22일의 BPS, PER, PBR, EPS, DIV, DPS과 같은 지표를 보여줍니다. 

 

그러면 이 데이터가 정확한지 네이버 금융에서 확인해 보도록 하겠습니다. 

 

네이버 금융 페이지에서 카카오를 검색창에 입력해 들어가 보았습니다.

 

카카오의 주식 데이터

2022년 2월 22일 기준 PER 36.14, EPS 2,540원, PBR 4.53, BPS 20,276원, 배당수익률(DIV) 0.06%입니다.

 

위의 출력결과랑은 확연히 차이가 나지 않나요?

 

네이버 금융페이지는 실시간으로 주식 데이터를 수정하기 때문에 신뢰성이 높습니다.

 

따라서 pykrx로 출력한 주식 데이터는 믿을만하지 않다는 것을 알 수 있습니다.

 

네이버 금융 페이지에서 PER, PBR, 배당수익률과 같은 데이터를 수집하는 방법을 알고 싶으시다면

아래 링크를 클릭해주세요.

 

[Python] 네이버 금융에서 증권 데이터(PER, PBR, 배당률) 수집하기(1)

 

[Python] 네이버 금융에서 증권 데이터(PER,PBR,배당률) 수집하기(1)

https://finance.naver.com/ 네이버 금융 웹사이트 오늘은 크롤링을 사용하여 네이버 금융에서 증권 데이터를 수집해보도록 하겠습니다. [파이썬] 네이버 금융에서 증권 데이터(PER,PBR,배당률) 수집하기(

bigdata-doctrine.tistory.com

[Python] 네이버 금융에서 증권 데이터(PER,PBR,배당률) 수집하기(2)

 

[Python] 네이버 금융에서 증권 데이터(PER,PBR,배당률) 수집하기(2)

오늘은 판다스 라이브러리를 통해 이전 시간에 수집한 증권데이터를 데이터프레임에 저장하고 맷플롯립을 통해 시각화를 한 후 엑셀에 저장해보도록 하겠습니다. 데이터프레임 만들기 #데이터

bigdata-doctrine.tistory.com

 

 

이번 시간에는 증권 데이터 라이브러리 중 pykrx에 대해 알아보았습니다.

 

pykrx의 특징은 국내 주식만 수집이 가능한대신 yfinance보다 국내주식 시세가 정확하고

PER, PBR, 배당수익률과 같은 지표는 신뢰성이 떨어진다는 점입니다.

 

다음은 yfinance, pykrx, FinanceDataReader 중 FinanceDataReader에 대해 알아보도록 하겠습니다. 

 

 

pykrx 개발자 깃허브

 

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

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

github.com