일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- recursion
- C
- hadoop2
- hive
- 코딩더매트릭스
- 파이썬
- graph
- python
- 그래프이론
- scrapy
- HelloWorld
- collections
- 텐서플로
- Java
- 딥러닝
- LSTM
- 주식분석
- 하둡2
- GRU
- 알고리즘
- Sort
- codingthematrix
- 하이브
- C언어
- 선형대수
- RNN
- tensorflow
- NumPy
- yarn
- effective python
- Today
- Total
EXCELSIOR
5. Pandas를 이용한 Naver금융에서 주식데이터 가져오기 본문
Pandas를 이용한 Naver금융에서 주식데이터 가져오기
이전에 포스팅한 3. 주식 데이터를 PostgreSQL에 저장하기에서는 주식데이터를 수집하기 위해서 증권API인 크레온Plus를 이용했다. 하지만, 이 증권API가 여간 귀찮은게 아니다. 증권API를 사용하려면 증권계좌를 만들어야 하고, Windows환경에서만 실행이되기 때문에 Mac OS에서는 사용이 불가했다. 또한, Windows 32bit환경에서 관리자 권한으로 증권API를 실행 해준 뒤에 파이썬으로 주식데이터를 수집할 수 있어 엄청 불편했다. 마지막으로 PostgreSQL이라는 DB에 저장해야 하기 때문에 별도의 DB를 설치해줘야 했다.
따라서, 이번 포스팅에서는 증권API와 DB를 이용하지 않고 Python 데이터 분석 모듈인 Pandas를 이용해 Naver금융에서 주식데이터를 가져와 보도록 하자.
1. pandas
모듈 설치하기
pandas는 Python
의 대표적인 데이터 분석 툴로써, 데이터 분석과 관련된 다양한 기능을 제공한다. (R
과 비슷하다고 보면 될듯) pandas
를 사용하기 위해서는 다음의 명령어로 설치를 해야한다.
- pandas 설치:
pip install pandas
2. 한국거래소(krx)에서 종목코드 가져오기
네이버금융에서 원하는 종목의 주식데이터를 가져오기 위해 먼저 코스피(KOSPI)과 코스닥(KOSDAQ)의 종목코드가 필요하다. 한국거래소(krx)에서는 주식시장에 상장된 기업들에 대해 종목코드를 제공한다. pandas
모듈의 pandas.read_html()
을 이용해 종목코드를 가져올 수 있다. pandas.read_html()은 HTML에서 <table></table>
태그를 찾아 자동으로 DataFrame
형식으로 만들어준다. 아래의 소스코드를 통해 주식의 종목코드를 가져올 수 있다.
head()
함수를 통해 상위 5개의 코드를 확인할 수 있다.
N0. | name | code |
---|---|---|
0 | BYC | 001460 |
1 | CJ CGV | 079160 |
2 | CJ씨푸드 | 011150 |
3 | DSR제강 | 069730 |
4 | KB금융 | 105560 |
3. 네이버금융(Naver금융)에서 종목 별 일자 데이터 가져오기
이제 네이버금융에서 원하는 종목의 일자 데이터를 가져와 보도록 하자. 여기서는 신라젠(215600) 의 일자 데이터를 가져온다. 아래의 소스코드는 특정 종목뿐만 아니라 사용자가 원하는 종목의 일자데이터를 가져올 수 있도록 get_url
이라는 함수를 만들어 줬다.
아래의 그림처럼 신라젠의 일자 데이터 url (http://finance.naver.com/item/sise_day.nhn?code=215600)에서 페이지로 구분되어 있는것을 확인할 수 있다. 각 종목마다 페이지 수가 다르기 때문에 BeautifulSoup이나 Scrapy를 이용하여 페이지 수를 크롤링하는 방법이 있지만 20페이지 정도만 가져와도 충분하다고 판단하여 별도의 크롤링 없이 20페이지만 가져오도록 지정해줬다. 크롤링을 적용하고 싶으면 Python/Web Crawling을 참고하면 된다.
df.head()
를 이용해 상위 5개의 데이터를 아래의 출력결과와 같이 확인할 수 있다.
No. | 날짜 | 종가 | 전일비 | 시가 | 고가 | 저가 | 거래량 |
---|---|---|---|---|---|---|---|
0 | 2017.11.17 | 98000 | 0 | 99200 | 99800 | 96600 | 1973229 |
1 | 2017.11.16 | 98000 | 1100 | 99500 | 102000 | 91300 | 4726419 |
2 | 2017.11.15 | 96900 | 7500 | 91200 | 100800 | 90100 | 8936953 |
3 | 2017.11.14 | 89400 | 8800 | 81400 | 89600 | 80600 | 6650916 |
4 | 2017.11.13 | 80600 | 5000 | 73400 | 80700 | 73100 | 3941332 |
아래의 소스코드는 추후에 데이터 분석에서 편하게 하기위해 추가적으로 처리해 준 코드이다.
No. | date | close | diff | open | high | low | volume |
---|---|---|---|---|---|---|---|
199 | 2017-01-20 | 45800 | 100 | 45500 | 46050 | 45150 | 20825 |
198 | 2017-01-23 | 49750 | 3950 | 46100 | 50700 | 45450 | 159477 |
197 | 2017-01-24 | 48200 | 1550 | 49400 | 50200 | 47500 | 78155 |
196 | 2017-01-25 | 48800 | 600 | 48200 | 49500 | 47800 | 40730 |
195 | 2017-01-26 | 48100 | 700 | 49100 | 49100 | 47600 | 18716 |
4. Plotly를 이용해 Time Series 그래프 그리기
마지막으로 plotly
를 이용하여 Time Series를 그려보도록 한다. plotly
에 대한 설명은 이전 포스팅인 4. Plotly를 이용한 캔들차트-Candlestick chart 그리기를 참고하면 된다.
아래의 소스코드를 통해 Time Series 그래프를 그릴 수 있다.
'Python > 주식 분석' 카테고리의 다른 글
7. Pandas와 Plotly를 이용한 Stochastic 차트 그리기 (5) | 2017.12.03 |
---|---|
6. Pandas와 Plotly를 이용한 MACD 차트 그리기 (3) | 2017.12.03 |
4. Plotly를 이용한 캔들차트-Candlestick chart 그리기 (4) | 2017.10.30 |
3. 주식 데이터를 PostgreSQL에 저장하기 (1) | 2017.10.29 |
2. 주식 분석 개발환경 설정 - 파이썬 환경 설정 및 실행 (4) | 2017.10.29 |