종합주가지수(KOSPI) 데이터 불러오기

2018. 7. 5. 07:57

이전 포스팅에서 생산자물가지수와 소비자물가지수의 관계에 대해서 알아보았다.
(참조: 한국은행 오픈API로 생산자물가지수와 소비자물가지수 비교하기)

생산자물가지수와 종합주가지수(KOSPI) 관계를 알아보기 전 종합주가지수를 받는 방법에 대해서 알아보려고 한다. 주가 데이터는 여러 곳에서 제공하는 만큼 얻을 수 있는 방법도 다양하다. 

오늘은 종합주가지수(KOSPI) 데이터를 얻는 방법에 대해서 알아보도록 하겠다.

 

 

제목
종합주가지수 데이터 불러오기

 

 

추천포스트

생산자물가지수와 주가의 관계를 알아보자
한국은행 경제지표(경제지수) 오픈API로 사용하기
파이썬으로 상관계수 구하기

 

 

필자는 한국은행 오픈API를 이용하고, 해당 데이터를 파이썬에서 파싱할 예정이다. 혹시 필요하실 분들이 있을 것 같아 04년 1월 부터 18년 5월까지의 종합주가지수 데이터를 csv형식으로 올려놓도록 하겠다.

 

크롤링을 통해서 각종 데이터를 긁어올 수 있지만 매번 코딩을 해야하니 이 또한 그리 편하지는 않다. 이런 불편을 가지고 있는 사람이 많아서일까. 파이썬에서는 보편적으로 많이 사용하는 데이터를 불러올 수 있는 패키지가 있다. 바로 pandas_datareader라는 패키지이다. 

 

하지만 해당 패키지를 사용하면 yahoo와 google에서 코스피를 포함한 개별 종목의 주가까지 다운받을 수 있다. 하지만 해당 패키지로 코딩을 하면 곧 사라질 것이라는 경고메시지가 나온다. 언제일지는 모르지는 향후에는 없어질 수 있는 패키지이다.

(참조: pandas_datareader를 이용해서 구글 finance에서 코스피 가져오기, http://www.todaymart.com/161)

그리고 필자가 하던 작업을 하던 중에 계속해서 에러가 발생했다. 

 

그래서, 다른 방법을 모색하던 중에 생산자물가지수를 가져온 한국은행에서 KOSPI 데이터를 가져오기로 했다. 다행히 한국은행 오픈API에서는 KOSPI데이터를 OPEN API로 제공하고 있었다.

 

 

통계코드검색

(한국은행 통계코드 검색, 바로가기)

 

 

한국은행 오픈API를 이용하는 방법에 대해서는 이전 포스팅을 참조하길 바란다. (참조: 한국은행 경제지표(경제지수) 오픈API로 사용하기)

 

아쉬운 점일자별로는 데이터를 제공하지 않고 월별로만 제공한다는 점이다. 

 

코스피지수는 1980년 1월 4일을 100으로 한 값이다. 실제 데이터를 가져와보니 2004년부터의 데이터가 제공됐다.  데이터를 긁어오고 기념으로 코스피지수를 그래프로 그려보았다.

 

 

월별_코스피_평균
2004년~2018년 5월, 월별 코스피평균

 

 

혹시 필요하신 분들이 있을까 싶어 해당 데이터를 업로드한다.

 

KOSPI_200401_201805.csv
다운로드

 

 

파이썬을 이용하면 주가 데이터를 비롯한 여러가지 주식 데이터를 편리하게 수집할 수 있다. 주가 데이터를 수집하는 방법이 궁금하다면, 아래 포스팅을 참조하기 바란다.
( 참조: 나만 모르는 파이썬 주식데이터 수집하는 방법 TOP3는? )

 

 

오늘은 이렇게 종합주가지수 데이터를 불러오는 작업을 해 보았다. 힌국은행 오픈API를 통해서 종합주가지수 데이터를 2004년 값부터 가져올 수 있었지만, 일별로 가져올 수 없다는 게 아쉬웠다.

 

파이썬을 이용한 주식관련된 다양한 데이터를 크롤링할 수 있다. 기업재무제표 정보를 크롤링하는 방법이 궁금하다면, 아래 포스팅을 참조해보자.
( 참조: 기업공시시스템 open api 사용하기 )

 

 

오픈API를 사용하면 다양한 재미있는 일들을 해 볼 수 있다. 파이썬을 활용한 오픈API 사용이 궁금하다면 아래 글을 참조해보자.

(참조: 오픈API를 활용한 사례는 어떤 것들이 있을까?)

 

 

마지막으로 작업한 코드를 첨부한다.

 

 

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
31
32
33
34
35
36
37
38
39
40
# coding=utf-8
 
from urllib.request import urlopen
import pandas as pd
import matplotlib.pyplot as plt
import json
 
 
if __name__ == "__main__":
    key = [자신의 키를 넣는다.]
    # https://ecos.bok.or.kr/jsp/openapi/OpenApiController.jsp?t=guideServiceDtl&apiCode=OA-1040&menuGroup=MENU000004
    # 여기서 주소 만들면 쉽다.
 
 
    # 통계 목록표 뽑기
    url = "http://ecos.bok.or.kr/api/StatisticItemList/" + key + "/json/kr/1/2000/028Y015/"
    result = urlopen(url)
    html = result.read()
    data = json.loads(html)
    data = data["StatisticItemList"]
 
    name = pd.DataFrame(data["row"])
 
    # 일자별로는 제공하지 않음
    url = "http://ecos.bok.or.kr/api/StatisticSearch/" + key + "/json/kr/1/1000/028Y015/MM/198001/201805/1080000/?/?"
    result = urlopen(url)
    html = result.read()
    data = json.loads(html)
    data = data["StatisticSearch"]
 
    data = pd.DataFrame(data["row"])
 
    data["DATA_VALUE"]=data["DATA_VALUE"].astype(float)
 
    plt.plot(data["TIME"], data["DATA_VALUE"])
 
    data_out=data[["DATA_VALUE","TIME"]]
    data_out.to_csv("KOSPI_200401_201805.csv")
 
 
cs

 

 

 

 

 

댓글()