[Python] FinanceDataReader로 주식데이터 가져오기

반응형
    반응형

    FinanceDataReader라는 라이브러리가 있어서 소개겸 포스팅하려 합니다.

    이 라이브러리를 쓰면 국내 주식, 미국 주식, 지수, 환율, 주요 암호화폐 가격 데이터를 가져올 수 있습니다.

    제가 이 포스팅을 쓰는 이유는 자꾸 잊어버려서

    코드를 저장하고자 쓰는 내용이라 원하는 내용이 없을 수도 있습니다.

    그리고 라이브러리에서 코드를 바꿔버리거나 서비스를 중지하면 되지 않을 수 있으니

    안 되시면 FinancedataReader 가이드 사이트나 Github에서 확인하시기 바랍니다.

     

    Install

    다음 코드를 파이썬 prompt나 파워쉘에서 입력해 설치를 합니다.

    쥬피터에서는 맨 앞에 느낌표(!)를 붙입니다.

    pip install finance-datareader

     

     

    전체 종목 코드 가져오기

    국내와 미국 주식 코드를 가져오려면 다음과 같이 합니다.

    섹터, 업종, 대표에 대한 정보도 가져올 수 있습니다.

     

    import FinanceDataReader as fdr
    df_krx = fdr.StockListing('KRX')

     

    국내 주식인 경우 파라미터에 표에 나온 심볼을 넣어서 원하는 데이터를 가져올 수 있습니다. 

    심볼  
    KRX KRX 전체 종목
    KOSPI KOSPI 종목
    KOSDAQ KOSDAQ 종목
    KONEX KONEX 종목

    미국 주식의 심볼은 다음과 같습니다

    심볼  
    NASDAQ 나스닥 종목
    NYSE 뉴욕 증권거래소 종목
    AMEX AMEX 종목
    SP500 S&P500 종목

     

    개별 종목의 가격 데이터 가져오기

    국내는 단축 코드를 미국은 티커로 가져올 수 있습니다.

     

    국내 주식

    파라미터에 코드와 일자를 넣어서 원하는 데이터를 가져옵니다.

     

    df = fdr.DataReader('종목코드','시작일자','종료일자')

     

    날짜는 필수로 입력하지 않아도 됩니다.

    날짜를 입력하지 않으면 전체 날짜 데이터를 가져옵니다.

     

    삼성전자(005930)로 예를 들면 다음과 같이 나옵니다.

    df = fdr.DataReader('005930','2020')
    df

     

    위와 같이 시가, 고가, 저가, 종가, 거래량, 전일대비 데이터를 얻을 수 있습니다.

     

    미국 주식

    미국 주식은 티커로 합니다. 애플(AAPL)을 예를 들겠습니다.

    df = fdr.DataReader('AAPL','2020')
    df

     

    지수 가져오기

    지수도 개별 종목의 가격 데이터를 가져오는 방법과 같고 코드나 티커 대신에 심볼을 넣어서 데이터를 얻게 됩니다.

     

    국내지수

    심볼  
    KS11 KOSPI 지수
    KQ11 KOSDAQ 지수
    KS50 KOSPI 50 지수
    KS100 KOSPI 100 지수
    KRX100 KRX 100 지수
    KS200 KOSPI 200 지수

     

    미국지수

     

    심볼  
    DJI 다우존스 지수
    IXIC 나스닥 지수
    US500 S&P 500 지수
    VIX S&P 500 VIX

     

    국가별 주요 지수

     

    심볼  
    JP225 닛케이 225 선물
    STOXX50E Euro Stoxx 50
    CSI300 CSI 300(중국)
    HSI 항생(홍콩)
    FTSE 영국 FTSE
    DAX 독일 DAX 30
    CAC 프랑스 CAC 40

     

    ETF 데이터 가져오기

    국내(KR),미국(US),일본(JP) ETF 데이터를 가져올 수 있는데 제 경험상으로 일부 종목의 가격이 다른 걸 알고 있는데 곧 고쳐지겠죠?

     

    전체 종목 데이터를 가져오려면 다음과 같이 입력합니다.

     

    df_etf = fdr.StockListing('ETF/KR')

    괄호 안에 미국인 경우는 ETF/US, 일본은 ETF/JP를 입력하면 됩니다.

    이렇게 심볼을 알게 되었으면 fdr.DataReader에 마찬가지로 입력해서 종목의 가격 데이터를 가져올 수 있습니다.

     

    KODEX 200선물인버스2X를 예로 들겠습니다.

    df_etf에서 심볼을 가져와서 해도 됩니다. 

    편의상 종목코드를 바로 입력하겠습니다.

     

    df_inver = fdr.DataReader('252670')

     

     

    이 외에도 환율, 암호화폐를 가져올 수 있습니다. 

    저는 잘 안 써서 여기서 포스팅을 마치도록 하겠습니다.

    나머지는 가이드 사이트에서 확인하시기 바랍니다.

     

    FinanceDataReader는 데이터프레임으로 데이터를 가져오니

    데이터프레임 다루는 방법을 잘 모르시면 다음 포스팅을 참고해주시기 바랍니다.

     

    관련 포스팅

    [Python/웹크롤링] - [웹크롤링] 네이버증권에서 재무제표 가져오기

    [Python/Pandas] - [Pandas]특정문자로 찾기 str.contains()

    [Python/Pandas] - [Pandas] DataFrame 결측치(NaN) 처리

    [Python/Pandas] - [Pandas] 데이터프레임 엑셀 저장, 불러오기

    [Python/Pandas] - [Pandas] 원하는 값으로 필터링

    댓글

    Designed by JB FACTORY

    ....