멋사 AI school 7기/TIL
FinanceDataReader 란 ? - 한국 주식 정보 가져오기
재용용
2022. 10. 9. 02:05
목표 설정
- 멋쟁이사자 AI 스쿨 7일차(220927) 학습 내용 정리하기
- FinanceDataReader 라이브러리를 이용해서 한국 주식 정보 가져오기
FinanceDataReader
- 한국 주식 가격, 미국 주식 가격, 지수, 환율, 암호화폐 가격, 종목 리스팅 등 금융 데이터 수집 라이브러리
- 가져온 데이터는 클라우드상의 메모리에 저장되어 있음
- 단점 : 사이트의 내용 (리뉴얼, 내부코드 변경, 디자인 변경 등) 이 변경되면 그에 맞게 코드를 다시 수정해야 함
- 결측치 : 채권이나 다른 종목 (금융 상품) 이 포함되어있어 데이터에 결측치 값이 많음
# 라이브러리 설치
!pip install -U finance-datareader
# 라이브러리 불러오기
import FinanceDataReader as fdr
# 라이브러리 버전 확인
fdr.__version__
# 한국거래소(korea exchange) 종목 전체 불러오기
>>> df = fdr.StockListing("KRX")
# 오늘 거래되고 있는 종목 개수 확인
>>> df.shape
(7875, 10)
# 상위 5개 데이터 가져오기
df.head()
# 하위 5개 데이터 가져오기
df.tail()
# 주식상장일 기준, 내림차순 정렬
df.sort_values(by="ListingDate", ascending=False).head(5)
# 삼성전자 주식 데이터 가져오기
df_samsung = df[df["Name"] == "삼성전자"]
# 삼성전자 종목코드 가져오기
>>> df_samsung["Symbol"]
005930
데이터 수집 시 유의사항
- 데이터가 공개되어있어도 모든 것을 수집할 수 있는 것은 아니다!
- 디도스 공격 : 무리하게 데이터를 요청해서 서버 다운시키는 경우
- 한번에 많은 페이지를 요청 ▶ DDOS 의심 ▶ time.sleep() 을 사용하여 시간 간격 두고 데이터 수집하기
- robots.txt : 스크랩핑 가능한지 여부 확인 가능
- 주소 뒤에 /robots.text 입력 + enter
- 각 사이트마다 저작권 정책이 있으며 공공데이터에도 저작권이 있으니 확인 필요 (2차 저작물이 가능한지 확인하기)
HTML
- table로 감싸져있는 부분은 pandas로 데이터를 수집할 수 있다 (pd.read_html)
- 검사 ▶ network ▶ 사이트 주소, Requests 방식 등 정보를 알 수 있음
Pandas 로 데이터 수집하기
- 테이블 저장 : table = pd.read_html(url)
- 데이터 프레임 : df = table[0]
- 컬럼명 확인 : df.columns
- 리스트 합치기 : pd.concat
- DataFrame 형성
- 만약, 컬럼명이 다른 리스트를 합치면 컬럼명이 여러 개 생김
- column이 같으면, 같은 컬럼에 합쳐짐
참고문헌
(1) FinanceDataReader 공식 문서
https://github.com/financedata-org/FinanceDataReader
(2) FinanceDataReader 사용 안내서
https://financedata.github.io/posts/finance-data-reader-users-guide.html