데린이 재영

FinanceDataReader 란 ? - 한국 주식 정보 가져오기 본문

멋사 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()

Fig1. df.head()
Fig2. df.tail()

# 주식상장일 기준, 내림차순 정렬
df.sort_values(by="ListingDate", ascending=False).head(5)

Fig3. 주식상장일 기준으로 데이터 내림차순 정렬

# 삼성전자 주식 데이터 가져오기
df_samsung = df[df["Name"] == "삼성전자"]

# 삼성전자 종목코드 가져오기
>>> df_samsung["Symbol"]
005930

Fig4. 삼성전자 주식정보 가져오기


데이터 수집 시 유의사항

  • 데이터가 공개되어있어도 모든 것을 수집할 수 있는 것은 아니다!
  • 디도스 공격 : 무리하게 데이터를 요청해서 서버 다운시키는 경우
    • 한번에 많은 페이지를 요청  ▶  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

 

Comments