Download Federal Reserve Economic Data (FRED) with Python
[This article was first published on   Yet Another Blog in Statistical Computing » S+/R, and kindly contributed to R-bloggers].  (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
            Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
In the operational loss calculation, it is important to use CPI (Consumer Price Index) adjusting historical losses. Below is an example showing how to download CPI data online directly from Federal Reserve Bank of St. Louis and then to calculate monthly and quarterly CPI adjustment factors with Python.
In [1]: import pandas_datareader.data as web
In [2]: import pandas as pd
In [3]: import numpy as np
In [4]: import datetime as dt
In [5]: # SET START AND END DATES OF THE SERIES
In [6]: sdt = dt.datetime(2000, 1, 1)
In [7]: edt = dt.datetime(2015, 9, 1)
In [8]: cpi = web.DataReader("CPIAUCNS", "fred", sdt, edt)
In [9]: cpi.head()
Out[9]:
            CPIAUCNS
DATE
2000-01-01     168.8
2000-02-01     169.8
2000-03-01     171.2
2000-04-01     171.3
2000-05-01     171.5
In [10]: df1 = pd.DataFrame({'month': [dt.datetime.strftime(i, "%Y-%m") for i in cpi.index]})
In [11]: df1['qtr'] = [str(x.year) + "-Q" + str(x.quarter) for x in cpi.index]
In [12]: df1['m_cpi'] = cpi.values
In [13]: df1.index = cpi.index
In [14]: grp = df1.groupby('qtr', as_index = False)
In [15]: df2 = grp['m_cpi'].agg({'q_cpi': np.mean})
In [16]: df3 = pd.merge(df1, df2, how = 'inner', left_on = 'qtr', right_on = 'qtr')
In [17]: maxm_cpi = np.array(df3.m_cpi)[-1]
In [18]: maxq_cpi = np.array(df3.q_cpi)[-1]
In [19]: df3['m_factor'] = maxm_cpi / df3.m_cpi
In [20]: df3['q_factor'] = maxq_cpi / df3.q_cpi
In [21]: df3.index = cpi.index
In [22]: final = df3.sort_index(ascending = False)
In [23]: final.head(12)
Out[23]:
              month      qtr    m_cpi       q_cpi  m_factor  q_factor
DATE
2015-09-01  2015-09  2015-Q3  237.945  238.305000  1.000000  1.000000
2015-08-01  2015-08  2015-Q3  238.316  238.305000  0.998443  1.000000
2015-07-01  2015-07  2015-Q3  238.654  238.305000  0.997029  1.000000
2015-06-01  2015-06  2015-Q2  238.638  237.680667  0.997096  1.002627
2015-05-01  2015-05  2015-Q2  237.805  237.680667  1.000589  1.002627
2015-04-01  2015-04  2015-Q2  236.599  237.680667  1.005689  1.002627
2015-03-01  2015-03  2015-Q1  236.119  234.849333  1.007733  1.014714
2015-02-01  2015-02  2015-Q1  234.722  234.849333  1.013731  1.014714
2015-01-01  2015-01  2015-Q1  233.707  234.849333  1.018134  1.014714
2014-12-01  2014-12  2014-Q4  234.812  236.132000  1.013343  1.009202
2014-11-01  2014-11  2014-Q4  236.151  236.132000  1.007597  1.009202
2014-10-01  2014-10  2014-Q4  237.433  236.132000  1.002156  1.009202
 
		
            
To leave a comment for the author, please follow the link and comment on their blog:  Yet Another Blog in Statistical Computing » S+/R.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
