본문 바로가기
개발일지

한국은행 ECOS API python 데이터 수집

by kirion 2022. 12. 9.
728x90
반응형

Python과 Ecos api를 이용해 데이터 수집

 

한국은행의 ecos에서는 다양한 데이터를 제공하고 있다. 대부분 국내, 국제 경제와 관련된 통계자료로 연, 분기, 월, 일 별로 나누어서 제공된다.

ecos 홈페이지를 통해서도 확인 가능하지만, 데이터를 확보하기 위해 API를 이용해 보겠다.

https://ecos.bok.or.kr/

 

https://ecos.bok.or.kr/#/

 

ecos.bok.or.kr

 

우선 api를 이용하려면 인증키를 발급받아야 한다. 

https://ecos.bok.or.kr/api/#/

Ecos api

왼쪽 상당에 인증키 신청 버튼이 있다. 

가입하는 절차와 동일한데, 신청을 하고 나면 인증키 시리얼이 발급된다. 

 

 

 

데이터의 수집은 간단하다.

import requests
import pandas as pd

필요한 패키지는 pandas와 requests.

 

url = "http://ecos.bok.or.kr/api/StatisticSearch/발급받은인증키/json/kr/1/100/801Y002/M/200001/202212/1090000/"
response = requests.get(url)

대략 url 양식은 위와 같다.

 

순서대로 설명해보자면,

  • 인증키는 발급받은 인증키 시리얼을 넣으면 된다.
  • 그다음 json 혹은 xml을 입력해 받고 싶은 형태를 넣어주고,
  • kr은 한국어, en이 영어명인가 그렇다. 
  • 1/100 은 가져올 페이지 번호를 입력한다. 1페이지부터 100페이지까지의 값을 가져오겠다는 뜻이다.
  • 801Y002가 들어가 있는 자리가 원하는 데이터의 통계표 코드이다. 대분류라고 보면 된다.
  • M자리에는 통계 값 주기로 A, Q, M, D로 구분된다. 연간, 분기, 월간, 일간으로 구분한다.
  • 200001/202212 자리는 기간. 여기서 주의해야 할 것은 통계 값 주기에 따라 값을 다르게 넣어주어야 한다.
    • A : 2010/2022
    • Q : 2010Q1/2022Q4
    • M : 201001/202212
    • D : 20100101/20221201
    • 이렇게 각기 다르게 입력을 해야 오류 없이 데이터를 불러올 수 있다. 이것 때문에 한참 헤맸다.
  • 1090000은 통계항목 코드로 소분류라 보면 된다. 

통계표와 통계항목에 대한 코드는 아래의 통계 코드 검색으로 찾으면 된다.

https://ecos.bok.or.kr/api/#/DevGuide/StatisticalCodeSearch

 

 

data = response.json()
rdata = data['StatisticSearch']["row"]
df = pd.DataFrame(rdata)
df.head(3).T

내려받은 데이터를 pandas로 프레임으로 변환해준 후 확인해보자.

데이터

데이터가 가로로 길어 Transpose 시켜 보았다.

통계 코드, 항목 코드, 값 주기, 값으로 잘 받아진 것이 보인다.

한 가지 유의할 점은 DATA_VALUE 컬럼의 값이 object로 설정되어있어서 float으로 변환한 후 사용해야 한다.

 

이렇게 필요한 데이터를 찾아서 수집하면 된다.

Ecos 페이지 내에서도 데이터를 엑셀로 받을 수 있게 되어있지만, 그럼 데이터 가공에 손이 더 많이 가기 때문에 python으로 수집하고 사용하는 것이 더 편리하다 생각된다. 수집 난이도도 매우 쉽기 때문에 필요한 자료를 바로바로 볼 수 있었다.

또한 자동화한 후 주기적으로 수집하기도 좋다. 

728x90
반응형

댓글