반응형
이번 글에서는 한국은행 경제통계시스템(ECOS)에서 제공하는 API를 활용하여 금리와 환율 데이터를 수집하는 방법을 상세히 알아보겠습니다.
🔑 1. 한국은행 Open API 시스템 접근하기
한국은행은 ECOS(Economic Statistics System)를 통해 다양한 경제 통계 데이터를 제공하고 있습니다. API를 사용하기 위해서는 다음 절차가 필요합니다.
- ECOS 홈페이지에 접속
- 회원가입 및 로그인 ✍️
- Open API → 인증키 신청 메뉴에서 API 키 발급받기 🔐
- 승인 후 발급받은 인증키 확인 ✅
🛠️ 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, '한국은행 기준금리 추이')
주의사항 및 팁
- API 호출 제한 🚫
- 일일 API 호출 횟수가 제한되어 있으므로 주의가 필요합니다
- 대량의 데이터를 수집할 때는 적절한 시간 간격을 두고 요청하는 것이 좋습니다
- 에러 처리 🔍
- API 응답에 대한 적절한 에러 처리가 필요합니다
- 네트워크 오류나 서버 응답 오류에 대비한 예외 처리를 구현하세요
- 데이터 가공 🔧
- 수집한 데이터는 필요에 따라 전처리가 필요할 수 있습니다
- 날짜 형식 변환, 결측치 처리 등을 고려하세요
🎯 마무리
한국은행 API를 활용하면 신뢰할 수 있는 경제 데이터를 쉽게 수집할 수 있습니다. 이렇게 수집한 데이터는 경제 분석, 연구, 투자 전략 수립 등 다양한 목적으로 활용할 수 있습니다.
반응형
'Study > AI' 카테고리의 다른 글
[OPEN API] 파이썬으로 한국거래소 코스피 종가 데이터 수집하기 (3) | 2024.11.09 |
---|---|
RL 기초익히기 및 다양한 기법에 대해 (1) | 2024.03.21 |
[ML] 머신러닝 프로젝트 사이클 (0) | 2023.05.07 |
[AI] 모델 기반 협업필터링 (0) | 2023.04.02 |
[AI] Collaborative Filltering(협업필터링) (0) | 2023.04.02 |