오늘은 증권 데이터 수집 라이브러리인
yfinance, pykrx, FinanceDataReader 라이브러리 중 pykrx에 대해 다뤄보도록 하겠습니다.
다른 증권 데이터 수집 라이브러리 설명을 보고 싶으면 아래 링크를 클릭하시면 됩니다.
yfinance : https://bigdata-doctrine.tistory.com/6
FinanceDataReader : https://bigdata-doctrine.tistory.com/8
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
- "get_market_ticker_list" 메서드는 주식 종목들을 가져옵니다.
- "get_market_ticker_name" 메서드는 심볼(티커)을 받으면 기업 이름을 가져옵니다.
- "get_market_ohlcv" 메서드는 OHLCV 주식 시세를 가져옵니다.
tickers의 출력결과는 다음과 같습니다.
출력 결과가 너무 길어 밑에는 생략하였습니다.
코스피 종목들의 심볼 리스트를 출력합니다.
name의 출력결과는 다음과 같습니다.
심볼이 "005930"인 기업의 이름을 출력합니다.
ohlcv의 출력결과는 다음과 같습니다.
2022년 2월 22일의 모든 코스피 종목들의 티커(심볼), 시가, 고가, 저가, 종가, 거래량, 거래대금, 등락률을 출력합니다.
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의 출력결과는 다음과 같습니다.
카카오의 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,배당률) 수집하기(2)
이번 시간에는 증권 데이터 라이브러리 중 pykrx에 대해 알아보았습니다.
pykrx의 특징은 국내 주식만 수집이 가능한대신 yfinance보다 국내주식 시세가 정확하고
PER, PBR, 배당수익률과 같은 지표는 신뢰성이 떨어진다는 점입니다.
다음은 yfinance, pykrx, FinanceDataReader 중 FinanceDataReader에 대해 알아보도록 하겠습니다.
'정보 > 프로그래밍' 카테고리의 다른 글
[NumPy] 주요 기능 문법 및 사용법 정리 (0) | 2022.06.29 |
---|---|
[Numpy] 주요 연산 문법 및 사용법 정리 (0) | 2022.06.28 |
[Numpy] 배열 생성 문법 및 사용법 정리 (0) | 2022.06.27 |
[Python] FinanceDataReader 증권 데이터 수집 라이브러리 기초 사용법 (0) | 2022.02.23 |
[Python] yfinance 증권 데이터 수집 라이브러리 기초 사용법 (2) | 2022.02.22 |