본문 바로가기

API

[한국은행 API] 제조업 재고율 및 설비투자지수와 코스피

반응형

한국은행 API를 이용해서 제조업 재고율 및 설비투자지수를 수집하고 코스피 데이터와 비교해 보겠습니다.
확인을 위해서는 한국은행 API에 가입이 되어 있어야 합니다.

1. 한국은행 API 가입
2. 제조업 재고율

3. 설비투자지수
4. 코스피와 비교

 

 

1. 한국은행 API 가입

https://yenpa.tistory.com/80

 

[한국은행 API] 인증키 신청 및 100대 통계 지표 수집

한국은행 API에 가입하고 서비스 항목 중 100대 통계지표에 대해 데이터 수집하고 그래프로 확인해보겠습니다. 1. 인증키 신청 2. 인증키 확인 3. 100대 통계 지표 수집 1. 인증키 신청 사이트 접속

yenpa.tistory.com

 

 

 

2. 제조업 재고율

한국은행 API의 통계조회 조건 설정의 서비스에서 통계항목코드 1을 '901Y026'로
지정하면 8.3.5. 제조업 재고율 데이터를 불러올 수 있습니다.
아래는 200601~202303 기간에서 월별로 조회한 코드입니다.

import requests

url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
        + '/json/kr/1/100/901Y026/M/200601/202303'
response = requests.get(url)
result = response.json()
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1


rows=[]
for i in range(0,list_count):
    start = str(i * 100 + 1)
    end = str((i + 1) * 100)
    
    url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey + '/json/kr/' \
            + start + '/' + end + '/901Y026/M/200601/202303'
    response = requests.get(url)
    result = response.json()
    rows = rows + result['StatisticSearch']['row']
    
df1=pd.DataFrame(rows)
df1

 

 

TIME Column이 YYYYMM의 object형식인데 Datetime Column으로 만들고,

Data_value는 float으로 변경 후 필요한 Column만 따로 저장했습니다.

df1=df1[['ITEM_NAME1','TIME','DATA_VALUE']]
df1['date']=pd.to_datetime((df1['TIME'].str[:4] + '-' + df1['TIME'].str[4:6] + '-01'))
df1=df1.astype({'DATA_VALUE':'float'})
df1=df1.drop_duplicates()
df1

 

그래프로 보겠습니다.

import plotly.express as px
from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig=px.line(data_frame=df1,x='date',y='DATA_VALUE')

fig.update_layout(title_text='제조업 재고율', title_x=0.5)
fig.show()

 

반응형

 

 

3. 설비투자지수

다음은 설비투자 지수를 수집하겠습니다.

통계항목코드 1을 '901Y066'로 지정하면 8.1.3. 설비투자지수 데이터 수집이 가능합니다.

원지수와 계절조정지수를 제공하는데 I15B로 지정해서 계절조정지수만 가져오겠습니다.

url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey \
        + '/json/kr/1/100/901Y066/M/200601/202303/I15B'
response = requests.get(url)
result = response.json()
list_total_count=(int)(result['StatisticSearch']['list_total_count'])
list_count=(int)(list_total_count/100) + 1


rows=[]
for i in range(0,list_count):
    start = str(i * 100 + 1)
    end = str((i + 1) * 100)
    
    url = 'https://ecos.bok.or.kr/api/StatisticSearch/' + apikey + '/json/kr/' \
            + start + '/' + end + '/901Y066/M/200601/202303/I15B'
    response = requests.get(url)
    result = response.json()
    rows = rows + result['StatisticSearch']['row']
    
df2=pd.DataFrame(rows)
df2

TIME Column이 YYYYMM의 object형식인데 Datetime Column으로 만들고,

Data_value는 float으로 변경 후 필요한 Column만 따로 저장했습니다.

df2=df2[['ITEM_NAME1','TIME','DATA_VALUE']]
df2['date']=pd.to_datetime((df2['TIME'].str[:4] + '-' + df2['TIME'].str[4:6] + '-01'))
df2=df2.astype({'DATA_VALUE':'float'})
df2=df2.drop_duplicates()
df2

 

그래프로 보겠습니다.

fig=px.line(data_frame=df2,x='date',y='DATA_VALUE')

fig.update_layout(title_text='설비투자지수', title_x=0.5)
fig.show()

 

 

제조업 재고율과 설비투자지수를 하나의 그래프에서 비교해 보겠습니다.

fig = make_subplots(specs=[[{'secondary_y':True}]])

fig.add_trace(
    go.Scatter(x=df1['date'], y=df1['DATA_VALUE'], name="제조업 재고율"),
    secondary_y=False
)
fig.add_trace(
    go.Scatter(x=df2['date'], y=df2['DATA_VALUE'], name="설비투자지수"),
    secondary_y=False
)


fig.update_layout(
    title_text = '제조업 재고율과 설비투자지수',
    title = {'x':0.5, 'y':0.9}
)

fig.show()

재고율과 설비투자지수가 전체적으로는 반대의 형태를 보이고 있습니다.

 

반응형

 

 

4. 코스피와 비교

마지막으로 코스피 데이터를 수집하고 제조업 재고율과 설비투자지수의 비교해 보겠습니다.

우선 코스피 데이터를 2006/01/01~2023/03/31 기간에서 수집하겠습니다.

yfinance를 이용했습니다.

import yfinance as yf
from datetime import datetime

enddate=datetime.now().strftime('%Y-%m-%d')
kospi=yf.download('^KS11', '2006-01-01', '2023-03-31', auto_adjust=True)
kospi

 

 

제조업 재고율과 코스피를 그래프로 확인하겠습니다.

fig = make_subplots(specs=[[{'secondary_y':True}]])

fig.add_trace(
    go.Scatter(x=df1['date'], y=df1['DATA_VALUE'], name="제조업 재고율"),
    secondary_y=False
)


fig.add_trace(
    go.Scatter(x=kospi.index, y=kospi['Close'], name='코스피지수'),
    secondary_y=True
)


fig.update_layout(
    title_text = '제조업 재고율과 코스피',
    title = {'x':0.5, 'y':0.9}
)

fig.show()

 

 

설비투자지수와 코스피를 보겠습니다.

fig = make_subplots(specs=[[{'secondary_y':True}]])

fig.add_trace(
    go.Scatter(x=df2['date'], y=df2['DATA_VALUE'], name="설비투자지수"),
    secondary_y=False
)


fig.add_trace(
    go.Scatter(x=kospi.index, y=kospi['Close'], name='코스피지수'),
    secondary_y=True
)


fig.update_layout(
    title_text = '설비투자지수와 코스피',
    title = {'x':0.5, 'y':0.9}
)

fig.show()

 

 

이상으로 제조업 재고율 및 설비투자지수를 수집하고 코스피 데이터와 비교해 봤습니다.

반응형