[누구나 따라 하는 금융데이터 분석] - 파이썬에서 캔들차트 그리기

알파프라임 / 조회수 : 2523

오늘은 파이썬 아나콘다 환경에서 주피터 노트북을 통해 주식 데이터를 읽어오고 받은 데이터를 캔틀차트로 그리는 법에 대해 알아보도록 하겠습니다. 캔틀차트가 무엇인지 모르시거나 개발 환경 준비가 안되신 분들은 저희 알파프라임의 다음 컨텐츠들을 참고하여 주시면 되겠습니다.

캔들차트에 대한 설명 : [떠먹여 주는 투자기초 시리즈] 시고저종, 거래량 그리고 거래대금

파이썬 환경 구축하기 : 아나콘다와 파이참을 이용하여 Jupyter notebook 실행하기

먼저 주가 데이터를 읽어오기 위한 pandas_datareader 모듈을 설치합니다. 여기서 모듈이란 '파일 단위로 작성된 프로그램의 기능 단위'를 의미합니다. 쉬운 이해를 위해 프로그램을 작성하는 일을 블록을 조립하여 로봇을 만드는 일이라고 생각해봅시다. 따로 만들어져있는 부품이 없다면 설명서를 보면서 작은 블록들을 하나하나 조립해 나가야 로봇이 겨우 완성될 것입니다. 하지만 내가 원하는 부분 (예를 들어 로봇의 팔이나, 다리, 몸통 등) 을 누가 조립해 놓았고 그것을 자유롭게 가져다 쓸 수 있다면 훨씬 수월하게 로봇을 만들 수 있을 것입니다.

프로그래밍에서 모듈이 바로 '조립되어있는 어떤 기능을 할 수 있는 부품'에 해당된다고 이해하시면 됩니다. 따라서 '모듈을 가져다 쓴다'라는 것은 '누군가 블록으로 조립해놓은 부품을 가져다 쓰는 것'입니다. 파이썬의 모듈을 사용할 때에는 해당 모듈을 설치하고 불러오기만(import) 하면 해당 모듈에 구현된 함수 및 자료구조 등을 편리하게 사용할 수 있습니다.

그렇다면 우리가 사용할 pandas_datareader라는 모듈을 설치하는 방법을 알아보도록 하겠습니다.

먼저 아나콘다가 설치된 폴더에 들어갑니다.

그다음 Anaconda Prompt를 실행합니다.

위와 같이 pip install pandas_datareader라고 입력한 뒤 엔터키를 누릅니다.

여기서 pip install 은 특정한 모듈을 설치하라는 명령어입니다.

설치가 정상적으로 진행되었다면 위와 같은 메시지가 출력됩니다.

설치에 문제가 있거나 진행에 문제가 생겼다면 pip 설치 링크에서 자신의 운영체제에 맞는 pip 툴을 설치해보시고 다시 위 과정을 시도해 보시면 됩니다. 이로써 pandas_datareader라는 모듈이 파이썬에 설치되었습니다.

이제 Jupyter notebook에서 모듈을 불러와서 사용하는 법을 알아보도록 하겠습니다. 저번 글에서처럼 Jupyter notebook을 실행한 뒤 처음 셀에 다음과 같이 입력 한 후 실행(쉬프트 + 엔터) 합니다.

정상적으로 실행되었다면 다음과 같이 오늘(컨텐츠 작성일 2018년 11월 28일)을 기준으로 1년전의 데이터 부터 최근 까지의 주가 정보가 표시됩니다.

위 코드의 뜻은 "pandas_datareader.data라는 모듈에 web이라는 이름을 붙여서 불러와라"입니다. 즉 우리는 이제 코드에서 web이라는 명령을 통해 pandas_datareader.data 모듈에 접근할 수 있는 것입니다.

이 코드의 뜻은 web이라는 이름을 가진 모듈에서 DataReader라는 함수를 사용하겠다는 뜻입니다. 그렇다면 파이썬에서 함수는 무엇일까요? 수학시간에 배운 함수와 비슷하게 생각하면 됩니다.

학창시절 박스 모양의 그림을 보면서 '함수는 x라는 입력이 들어오면 어떤 y 값을 뱉어내는 기계와 비슷한 것이다.'라고 배운 적이 있습니다.

함수 박스 개념

파이썬에서 함수도 이와 같습니다. 우리가 입력한 web.DataReader 가 박스의 역할을 하는 것이고 그 옆의 괄호 안에 있는 값들, ('종목코드', '주가 데이터를 읽어올 곳') 와 같은 양식으로 표현되어 있는 정보가 입력값인 x에 해당합니다.

이 x 데이터가 web.DataReader라는 박스를 거치면 그 기간 동안의 주가 데이터라는 y 값이 나오게 되는 것이고 주피터 노트북은 나오는 y 값을 f 라는 변수에 저장하게 됩니다. 따라서 위에서 입력한 코드를 해석해보면 다음과 같습니다.

robinhood 데이터 소스에서 애플(AAPL) 관련 주가 데이터 최근 1년치를 가지고 와라

f 라는 변수는 pandas.DataFrame 타입을 가지고 있기 때문에 읽어온 데이터의 인덱스를 조절함으로써 기간을 조절 할 수 있습니다. 예를 들어 올해 3분기(7월 ~ 9월) 까지의 데이터만 원한다면 다음과 같이 코드를 작성하여 원하는 부분의 데이터를 뽑아낼 수 있습니다.

data 라는 변수에 2018년 3분기 애플 주가데이터를 저장한 모습

이제 캔들차트를 출력하는 방법을 알아보도록 하겠습니다. 먼저 캔들차트를 그리기 전에 인덱스를 따로 다음과 같이 설정해 주어야 합니다.

정상적으로 실행되었다면 다음과 같이 출력되어야 합니다.

캔들차트를 그려주는 모듈에서 인덱스가 문자열 형태여야 오류 없이 잘 나오기 때문에 위와 같은 사전작업을 해준것 입니다. 그렇다면 이제 캔들차트를 그려주는 모듈을 설치해 보도록 하겠습니다.

원래 matplotlib 라이브러리에서 finance 모듈을 제공하여 그를 불러와 캔들차트를 그릴 수 있었지만 최근 finance 모듈이 삭제되어 사용이 불가능해 졌습니다. 이 삭제된 모듈을 다음과 같이 설치 할 수 있습니다. 아까 데이터 리더를 설치하였던 프롬프트(또는 사용자가 쓰는 터미널)을 열어 다음과 같이 입력합니다.

삭제된 finance 모듈을 pip 명령어를 통해 설치 할 수 있습니다.

설치가 완료되었다면 다음과 같이 코드를 입력하여 캔들차트를 주피터 노트북 상에 띄울 수 있습니다.

이번 글에서는 Pandas DataReader라는 모듈을 활용해서 주가 데이터를 불러오고 삭제된 matplotlib finance 모듈을 설치하여 캔들 차트를 그리는 방법에 대해 알아보았습니다. 다음 게시글에서는 이동평균선이나 지지/저항 등 여러가지 지표들을 차트에 같이 그리는 방법에 대해 알아보도록 하겠습니다.

질문이나 더 궁금한 점은 댓글로 올려주시면 저에게도 큰 도움이 될 것 같습니다! 다음 포스팅도 기대해주시길 바랍니다.

더 유익한 정보를 얻고 싶으시다면 페이스북 알파스퀘어 페이지를 방문해주세요!

차세대 주식투자 플랫폼, 알파스퀘어에서 스마트한 주식투자를 경험해보세요!

기업문화 엿볼 때, 더팀스

로그인

/