본문 바로가기

자산관리

Consumer Price Index (미국 소비자 물가지수) 다운로드

인플레이션 때문에 CPI 데이터가 필요했는데 기대와는 다르게 주식 데이터처럼 쉽게 다운로드할 수가 없었다. 

구글링을 통해 그럭저럭 해결할 수 있었다.

https://data.bls.gov/cgi-bin/surveymost? bls에서

 

Top Picks (Most Requested Statistics) : U.S. Bureau of Labor Statistics

 

data.bls.gov

 

해당 지수를 클릭 후 Retrieve data를 누르면

해당 기간을 선택 후 GO 버튼을 누르면 데이터가 테이블로 주어진다. xlsx 포맷으로도 다운 가능하다. 

기관에서 데이터를 요청할 수 있는 파이썬 코드를 공유하였다. 

#-----------------------------------------------------------------------------------------------------
import requests
import json
import prettytable
headers = {'Content-type': 'application/json'}
data = json.dumps({"seriesid": ['CUUR0000 SA0'], "startyear":"2003", "endyear":"2012"})
p = requests.post('https://api.bls.gov/publicAPI/v2/timeseries/data/', data=data, headers=headers)
json_data = json.loads(p.text)
for series in json_data['Results']['series']:
    x=prettytable.PrettyTable(["series id","year","period","value","footnotes"])
    seriesId = series['seriesID']
    for item in series['data']:
        year = item['year']
        period = item['period']
        value = item['value']
        footnotes=""
        for footnote in item['footnotes']:
            if footnote:
                footnotes = footnotes + footnote['text'] + ','
        if 'M01' <= period <= 'M12':
            x.add_row([seriesId,year,period,value,footnotes[0:-1]])
    output = open(seriesId + '.txt','w')
    output.write (x.get_string())
    output.close()

#-----------------------------------------------------------------------------------------------------

위 코드를 실행시키면 같은 폴더 내에 아래와 같은 txt 파일이 생성된다. 해당 기간을 지정해줘야 하는데 최대 10년 치 밖에 저장이 안 된다. 그래서 두 번에 나눠서 받아 합치는 작업을 거쳤다. 

 

반복 작업을 피하기 위해 나중에 쓰기 편한 형태로 저장하였다. 

CPI_history_2003_2022.csv
0.00MB

 

발표 날짜는 매월 13-15일로 불규칙한 것 같아 월말로 단순화하였다.