Study/AI

[OPEN API] 파이썬으로 한국은행🏦 API를 활용한 금리/환율 데이터 수집하기

motti 2024. 11. 10. 23:06
반응형

이번 글에서는 한국은행 경제통계시스템(ECOS)에서 제공하는 API를 활용하여 금리와 환율 데이터를 수집하는 방법을 상세히 알아보겠습니다.

🔑 1. 한국은행 Open API 시스템 접근하기

한국은행은 ECOS(Economic Statistics System)를 통해 다양한 경제 통계 데이터를 제공하고 있습니다. API를 사용하기 위해서는 다음 절차가 필요합니다.

 

  1. ECOS 홈페이지에 접속
  2. 회원가입 및 로그인 ✍️
  3. Open API → 인증키 신청 메뉴에서 API 키 발급받기 🔐
  4. 승인 후 발급받은 인증키 확인 ✅

 

https://ecos.bok.or.kr

 

ecos.bok.or.kr

 

 

🛠️  2. API 호출 준비하기

한국은행 API는 REST 방식으로 제공되며, 주요 파라미터는 다음과 같습니다.

 

  • authKey: 인증키 🔑
  • serviceKey: 서비스 코드 📋
  • 통계표 코드: 원하는 데이터에 따른 고유 코드 📊
    • 기준금리: 722Y001 💰
    • 시장금리: 817Y002 📈
    • 환율: 731Y001 💱

 

💻 3. Python 코드

다음은 한국은행 API를 활용해 금리와 환율 데이터를 수집하는 파이썬 코드입니다.

 

import requests
import pandas as pd
from datetime import datetime

class BankOfKoreaAPI:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = "http://ecos.bok.or.kr/api/StatisticSearch"
        
    def get_data(self, stat_code, start_date, end_date):
        """
        한국은행 API를 통해 데이터를 가져오는 함수
        
        Parameters:
        - stat_code: 통계표 코드
        - start_date: 시작일자 (YYYYMMDD)
        - end_date: 종료일자 (YYYYMMDD)
        """
        params = {
            'auth': self.api_key,
            'format': 'json',
            'lang': 'kr',
            'startDate': start_date,
            'endDate': end_date,
            'statCode': stat_code,
            'row': '100'  # 한 번에 가져올 데이터 수
        }
        
        response = requests.get(self.base_url, params=params)
        
        if response.status_code == 200:
            data = response.json()
            if 'StatisticSearch' in data:
                rows = data['StatisticSearch']['row']
                df = pd.DataFrame(rows)
                return df
        return None

    def get_base_rate(self, start_date, end_date):
        """기준금리 데이터 수집"""
        return self.get_data('722Y001', start_date, end_date)
    
    def get_market_rate(self, start_date, end_date):
        """시장금리 데이터 수집"""
        return self.get_data('817Y002', start_date, end_date)
    
    def get_exchange_rate(self, start_date, end_date):
        """환율 데이터 수집"""
        return self.get_data('731Y001', start_date, end_date)

# 사용 예시
api_key = "YOUR_API_KEY"
bok_api = BankOfKoreaAPI(api_key)

# 기준금리 데이터 수집
start_date = "20240101"
end_date = "20241101"
base_rate_data = bok_api.get_base_rate(start_date, end_date)

# 데이터 저장
if base_rate_data is not None:
    base_rate_data.to_csv("base_rate_data.csv", index=False)
    print("기준금리 데이터 저장 완료")

 

 

📊 4. 데이터 활용 및 시각화

수집한 데이터를 시각화하는 예제 코드입니다

 

import matplotlib.pyplot as plt

def plot_rate_trend(df, title):
    plt.figure(figsize=(12, 6))
    plt.plot(pd.to_datetime(df['TIME']), df['DATA_VALUE'].astype(float))
    plt.title(title)
    plt.xlabel('날짜')
    plt.ylabel('금리 (%)')
    plt.grid(True)
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.show()

# 기준금리 추이 그래프
plot_rate_trend(base_rate_data, '한국은행 기준금리 추이')

주의사항 및 팁

  1. API 호출 제한 🚫
    • 일일 API 호출 횟수가 제한되어 있으므로 주의가 필요합니다
    • 대량의 데이터를 수집할 때는 적절한 시간 간격을 두고 요청하는 것이 좋습니다
  2. 에러 처리 🔍
    • API 응답에 대한 적절한 에러 처리가 필요합니다
    • 네트워크 오류나 서버 응답 오류에 대비한 예외 처리를 구현하세요
  3. 데이터 가공 🔧
    • 수집한 데이터는 필요에 따라 전처리가 필요할 수 있습니다
    • 날짜 형식 변환, 결측치 처리 등을 고려하세요
    •  

🎯 마무리

한국은행 API를 활용하면 신뢰할 수 있는 경제 데이터를 쉽게 수집할 수 있습니다. 이렇게 수집한 데이터는 경제 분석, 연구, 투자 전략 수립 등 다양한 목적으로 활용할 수 있습니다.

반응형