본문 바로가기

API

[Fred API] CPI(소비자물가지수), CoreCPI 데이터 수집

반응형

Fred API를 이용해서 CPI 및 Core CPI의 데이터를 수집해서 그래프로 확인해보겠습니다.

 

1. Fred 가입 후 API KEY 신청 및 확인하기

2. CPI, Core CPI 데이터 수집

3. 그래프 확인

 

1. Fred 가입 후 API KEY 신청 및 확인하기

https://yenpa.tistory.com/65

 

[Fred API] 가입 후 API KEY 신청 및 확인하기

Fred 사이트에 가입 후 API Key 확인하는 방법을 알아보겠습니다. 1. Fred 사이트 가입 아래의 사이트에 접속합니다 https://fred.stlouisfed.org/ Federal Reserve Economic Data | FRED | St. Louis Fed Welcome to FRED, your trust

yenpa.tistory.com

 

 

2. CPI, Core CPI 데이터 수집

필요 라이브러리를 import 합니다. API_KEY는 본인의 데이터가 필요합니다.

import pandas as pd
import fredpy as fp
from datetime import datetime, timedelta
#fp.api_key = 'YOUR_API_KEY'

CPI 및 Core CPI의 데이터를 불러옵니다.

CPI의 Symbol은 'CPIAUCSL'이고 Core CPI는 'CPILFESL'입니다.

enddate=(datetime.now() + timedelta(days=-1)).strftime('%Y-%m-%d')
cpi= fp.series('CPIAUCSL',enddate)
corecpi = fp.series('CPILFESL',enddate)
cpi.data

CPI Data인데 1947년부터의 데이터가 보이는데, Row Data로 일반적으로 표시하는 %가 아닙니다.

 

이것을 YOY(1년 전 같은 달에서의 성장)의 데이터로 확인해보겠습니다.

fredpy에서 apc라는 function으로 계산이 가능합니다.

cpiyoy=cpi.apc().data
cpiyoy

%로 계산된 것이 확인이 됩니다.

이번에는 MOM(지난달 대비 성장)을 확인해 보겠습니다.

fredpy에서는 별도로 지원은 없고 pct_change로 간단히 계산이 됩니다.

cpimom=cpi.data.pct_change()*100
cpimom

Core CPI도 YOY와 MOM을 계산하겠습니다.

corecpiyoy=corecpi.apc().data
corecpimom=corecpi.data.pct_change()*100

 

3. 그래프 확인

Plotly를 이용해서 CPI YOY의 장기 데이터 그래프를 그려보겠습니다.

import plotly.express as px

fig=px.bar(x=cpiyoy.index, y=cpiyoy.values, color=cpiyoy.values, 
          title='CPI YOY 장기데이터', height=500)
fig.update_traces(textposition='outside')
fig.update_layout(
    uniformtext_minsize=8, uniformtext_mode='hide',
    title={
        'y':0.85,
        'x':0.5,
        'xanchor': 'center',
        'yanchor': 'top'})
fig.show()

다음으로는 CPI MOM 장기 데이터를 볼까요.

fig=px.bar(x=cpimom.index, y=cpimom.values, color=cpimom.values, 
          title='CPI MOM 장기데이터', height=500)
fig.update_traces(textposition='outside')
fig.update_layout(
    uniformtext_minsize=8, uniformtext_mode='hide',
    title={
        'y':0.85,
        'x':0.5,
        'xanchor': 'center',
        'yanchor': 'top'})
fig.show()

CPI와 Core CPI를 같은 그래프에서 확인해보도록 하겠습니다.

import plotly.express as px

fig=px.line(data_frame=dfyoy, x=dfyoy.index, y=['CPI','Core CPI'], 
          title='CPI vs CoreCPI YOY 장기데이터', height=500)
fig.update_layout(
    uniformtext_minsize=8, uniformtext_mode='hide',
    title={
        'y':0.85,
        'x':0.5,
        'xanchor': 'center',
        'yanchor': 'top'})
fig.show()

경기침체 데이터와 같은 그래프로 확인해보겠습니다.

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

usreg = fp.series('USREC',enddate)
usregdata=usreg.data.loc[usreg.data.index>='1945-01-01']

# Create figure with secondary y-axis
fig = make_subplots(specs=[[{"secondary_y": True}]])

# Add traces
fig.add_trace(
    go.Line(x=dfyoy.index, y=dfyoy['CPI'], name="CPI"),
    secondary_y=True,
)

fig.add_trace(
    go.Line(x=dfyoy.index, y=dfyoy['Core CPI'], name="Core CPI"),
    secondary_y=True,
)

fig.add_trace(
    go.Bar(x=usregdata.index, y=usregdata.values, name="경기침체"),
    secondary_y=False,
)

fig.show()

 

이상으로 CPI 및 Core CPI의 데이터를 수집 후 그래프로 확인해 봤습니다.

반응형