본문 바로가기
Programming

한국은행 Open API 등록 방법

by 느리게 걷는 즐거움 2024. 3. 19.
반응형

한국은행 Open API 등록 방법을 정리합니다. 한국은행에서는 다양한 통계 정보를 제공하고 있습니다. 실시간으로 정보를 확인하기 위해서는 경제 통계 Open API를 등록해야 합니다. API를 등록하고 사용하는 과정을 정리합니다. API를 사용한 시각화 결과는 NSI(News Sentiment Index)정보 시각화 링크에서 확인부탁드립니다.

한국은행 Open API

Open API서비스에 등록을 위해서 https://ecos.bok.or.kr/api/ 사이트로 접속하면 아래와 같이 등록을 위한 단계 가이드를 확인할 수 있습니다.

하나하나 따라가며 진행해 보겠습니다. Open API 인증키를 신청하여 가입 절차를 따라 진행합니다. 신청이 완료되면 신청한 ID/PW로 로그인이 가능합니다. 로그인 후 'MyPage'로 들어가면 자신의 인증서 신청 상태를 확인할 수 있습니다. 최초 신청 시에는 발급까지 시간이 필요합니다. 저의 경우 1~2일 정도 지난 후 인증키가 발급 되었다는 메일을 받을 것 같습니다.

인증키를 받지 않은 상태이더라도 API를 테스트는 가능합니다. 요청 방식과 결과는 어떤 구조인지 미리 확인해 봅니다. API 사용법 확인을 위해 [개발 가이드] > [개발 명세서] 메뉴로 들어갑니다. 크게 아래의 6가지 서비스를 제공하고 있고 각 서비스 버튼을 누르면 요청 인자, 에러 코드 정보, 그리고 출력 정보를 확인할 수  있습니다.

[통계 조회 조건 설정] 서비스는 통계표 코드로 제공하는 한국은행 통계정보를 받을 수 있는 API입니다. 요청을 위해서는 위의 개발 명세서와 같이 https://ecos.bok.or.kr/api 주소에 요청인자 정보를 조합하여 정보를 요청합니다. 샘플테스트 보면서 어떻게 사용하는 지 확인합니다.

https://ecos.bok.or.kr/api/StatisticSearch/sample/json/kr/1/10/200Y001/A/2015/2021/10101/?/?/?

샘플 URL의 요청인자가 '/'를 구분자로 순서대로 전달 되는 것을 확인할 수 있습니다. 요청인자 Table과 같이 비교합니다. 저는 결과값 파일 형식을 'json'으로 변경하기 위해서 샘플 테스트에서 요청유형을 'json'으로 변경하였습니다. API결과는 아래와 같습니다.

data = {
    "StatisticSearch": {
        "list_total_count": 3,
        "row": [
                {
                    "STAT_CODE":"200Y001",
                    "STAT_NAME":"2.1.1.1. 주요지표(연간지표)",
                    "ITEM_CODE1":"10101",
                    "ITEM_NAME1":"국내총생산(명목, 원화표시)",
                    "UNIT_NAME":"십억원 ",
                    "TIME":"2015",
                    "DATA_VALUE":"1658020.4",
                },
                {
                    "STAT_CODE":"200Y001",
                    "STAT_NAME":"2.1.1.1. 주요지표(연간지표)",
                    "ITEM_CODE1":"10101",
                    "ITEM_NAME1":"국내총생산(명목, 원화표시)",
                    "UNIT_NAME":"십억원 ",
                    "TIME":"2016",
                    "DATA_VALUE":"1740779.6",
                },
                {
                    "STAT_CODE":"200Y001",
                    "STAT_NAME":"2.1.1.1. 주요지표(연간지표)",
                    "ITEM_CODE1":"10101",
                    "ITEM_NAME1":"국내총생산(명목, 원화표시)",
                    "UNIT_NAME":"십억원 ",
                    "TIME":"2017",
                    "DATA_VALUE":"1835698.2",
                },
        ]
    },
}

'list_total_count' 키는 결과의 갯수를 나타내고 'row' 키에 정보가 저장되었습니다. 

ret_json = json.loads(json_data)
df= pd.DataFrame(ret_json['StatisticSearch']['row'])
display(df)

row 키에 저장된 데이터를 위의 코드로 Pandas 데이터 프레임으로 변경하면 API로 전달된 데이터를 데이터 프레임으로 변경할 수 있습니다.

Open API 활용 시각화 그래프

한국은행 open API를 사용하면 한국은행에서 제공하는 다양한 통계정보를 확인할 수 있습니다. 저는 한국은행 통계정보로 제공되는 뉴스 심리지수, NSI(News Sentiment Index)정보 시각화를 진행 했습니다. NSI는 딥러닝 알고리즘을 통해서 경제 기사의 긍정 또는 부정의 감정 분류를 진행합니다. 이 정보를 바탕으로 경제 기사가 해당 시점의 경제 상황을 바라보는 감정을 수치로 표현합니다. NSI 값이 100을 기준으로 높은 경우 긍정 적인 기사가 많은 상태입니다.

시계열 데이터 시간 범위 버튼

시계열 데이터는 특정한 시간 범위를 설정하여 그래프의 변화 양상을 비교하는 경우가 많습니다. 그리고 NSI와 같이 비교하는 그래프 정보가 함께 표현되는 것을 필요합니다. 그래프의 상단에 일정 시간 범위를 설정할 수 있는 버튼을 추가하였습니다.

비교를 위한 KOSPI 시계열 데이터 추가

NSI와 함께 비교하는 경우 데이터의 변화 양상을 더 쉽게 이해할 수 있습니다. NSI와 함께 KOSPI 데이터를 그래프에 표시하는 경우 두 데이터 값의 크기가 매우 달라서 NSI의 변화가 그래프에서 잘 표현되지 않습니다. 이를 해결하기위해 Y축의 좌측과 우측에 각각의 값을 표현하고 KOSPI의 경우 값을 log스케일로 표현합니다.

위의 내용을 적용한 NSI 시계열 데이터 시각화 결과는 아래와 같습니다. 자세한 정보는 NSI(News Sentiment Index)정보 시각화 링크에서 확인부탁드립니다.

 

 

반응형