In [2]:
%matplotlib inline
import matplotlib as mpl
import pandas as pd
import numpy as np
import os
import seaborn as sns
sns.set(style="white")
import matplotlib.pyplot as plt
In [16]:
df_big = pd.DataFrame(columns = ['source','target','id','point'])
years = [2015,2016]
quarters = [1,2,3,4]
df_List = []
for year in years:
for q in quarters:
f = str(year) + 'Q' + str(q)
fname = f + '.csv'
if os.path.isfile('../data/' + fname):
raw_df = pd.read_csv('../data/' + fname,header = 1)
# find the row where the growth expectations start
dum = raw_df[raw_df['TARGET_PERIOD'] == 'GROWTH EXPECTATIONS; YEAR-ON-YEAR CHANGE IN REAL GDP'].index[0]
mask_columns = ~raw_df.columns.str.contains('Unnamed')
df = raw_df.iloc[0:dum-1,mask_columns]
df['source'] = str(year) + '-Q' + str(q)
df = df.rename(columns={'TARGET_PERIOD':'target','FCT_SOURCE':'id','POINT':'point',
'TN1_0':'[-2.0,-1.1]','FN1_0TN0_6':'[-1.0,-0.6]',
'FN0_5TN0_1':'[-0.5,-0.1]','F0_0T0_4':'[0.0,0.4]',
'F0_5T0_9':'[0.5,0.9]','F1_0T1_4':'[1.0,1.4]',
'F1_5T1_9':'[1.5,1.9]','F2_0T2_4':'[2.0,2.4]',
'F2_5T2_9':'[2.5,2.9]','F3_0T3_4':'[3.0,3.4]',
'F3_5T3_9':'[3.5,3.9]','F4_0':'[4.0,5.0]'})
df = df[['source','target','id','point']]
# remove rows where point is missing
maskNaN = df.point.isnull()
df = df[~maskNaN]
df.fillna(0,inplace = True)
for colname in df.columns[3:]:
df[colname] = df[colname].astype('float')
df_big = pd.concat([df_big,df], axis=0, ignore_index=True)
#df_List.append(df)
In [17]:
df = df_big
df.tail()
Out[17]:
In [18]:
df.shape
Out[18]:
In [25]:
print(df.loc[df.target=='2017','source'].unique())
print(df.loc[df.target=='2020','source'].unique())
In [47]:
target = '2017'
mask1 = (df.target == target) & (df.source == '2015-Q3')
mask2 = (df.target == target) & (df.source == '2015-Q4')
mask3 = (df.target == target) & (df.source == '2016-Q1')
mask4 = (df.target == target) & (df.source == '2016-Q2')
x1 = df.loc[mask1,'point'].values
x2 = df.loc[mask2,'point'].values
x3 = df.loc[mask3,'point'].values
x4 = df.loc[mask4,'point'].values
#x1 = x1.reindex()
#x2 = x2.reindex()
x1 = pd.Series(x1, name="$X_1$")
x2 = pd.Series(x2, name="$X_2$")
x3 = pd.Series(x3, name="$X_3$")
x4 = pd.Series(x4, name="$X_4$")
In [65]:
plt.style.use('fivethirtyeight')
plt.figure(figsize = (10,6))
#sns.set(style="white", palette="muted", color_codes=True)
#fig, axes = plt.subplots(2, 2, figsize = (7,7) )
years = [2017]
target = str(years[i-1])
mask1 = (df.target == target) & (df.source == '2015-Q3')
mask2 = (df.target == target) & (df.source == '2015-Q4')
mask3 = (df.target == target) & (df.source == '2016-Q1')
mask4 = (df.target == target) & (df.source == '2016-Q2')
x1 = df.loc[mask1,'point'].values
x2 = df.loc[mask2,'point'].values
x3 = df.loc[mask3,'point'].values
x4 = df.loc[mask4,'point'].values
x1 = pd.Series(x1, name="$X_1$")
x2 = pd.Series(x2, name="$X_2$")
x3 = pd.Series(x3, name="$X_3$")
x4 = pd.Series(x4, name="$X_4$")
# plt.subplot(1, 1, i)
# plt.title(str(target)) #, fontsize='large')
sns.distplot(x1, hist=False, rug=False, kde_kws={'shade':True}, color='b', label='2015-Q3')
sns.distplot(x2, hist=False, rug=False, kde_kws={'shade':True}, color='g', label='2015-Q4')
sns.distplot(x3, hist=False, rug=False, kde_kws={'shade':True}, color='y', label='2016-Q1')
sns.distplot(x4, hist=False, rug=False, kde_kws={'shade':True}, color='r', label='2016-Q2')
plt.xlabel('')
plt.legend(loc='best', fontsize='medium', title=' source:',)
plt.title('Distributions of SPF point forecasts for HICP inflation in ' + target, fontsize='large', y = 1.04)
plt.tight_layout()
#plt.suptitle('Distributions of SPF point forecasts for HICP inflation in ' + target, fontsize='large', y = 1.04)
#plt.subplots_adjust(hspace=0.4)
#plt.suptitle("I never said they'd be pretty")
;
plt.savefig('../figures/Source2015_Q3_Q4_2016_Q1_Q2-Target' + target +'.png')
plt.savefig('../figures/Source2015_Q3_Q4_2016_Q1_Q2-Target' + target +'.pdf')
plt.savefig('../figures/Source2015_Q3_Q4_2016_Q1_Q2-Target' + target +'.jpeg')
In [49]:
target = '2017'
mask1 = (df.target == target) & (df.source == '2015-Q3')
mask2 = (df.target == target) & (df.source == '2015-Q4')
mask3 = (df.target == target) & (df.source == '2016-Q1')
mask4 = (df.target == target) & (df.source == '2016-Q2')
x1 = df.loc[mask1,'point'].values
x2 = df.loc[mask2,'point'].values
x3 = df.loc[mask3,'point'].values
x4 = df.loc[mask4,'point'].values
#x1 = x1.reindex()
#x2 = x2.reindex()
x1 = pd.Series(x1, name="$X_1$")
x2 = pd.Series(x2, name="$X_2$")
x3 = pd.Series(x3, name="$X_3$")
x4 = pd.Series(x4, name="$X_4$")
In [57]:
plt.figure(figsize = (10,6))
sns.set(style="white", palette="muted", color_codes=True)
#fig, axes = plt.subplots(2, 2, figsize = (7,7) )
sources = ['2015-Q3','2015-Q4','2016-Q1','2016-Q2']
for i in range(1,5):
plt.subplot(2, 2, i)
plt.title(sources[i-1]) #, fontsize='large')
sns.distplot(eval('x'+str(i)), hist=False, rug=False, kde_kws={'shade':True}, color='b', label='')
plt.xlabel('')
plt.legend(loc='best', fontsize='medium', title=' source:',)
plt.xlim([0,3])
plt.tight_layout()
plt.suptitle('Distributions of SPF point forecasts for HICP inflation', fontsize='large', y = 1.04)
plt.subplots_adjust(hspace=0.4)
#plt.suptitle("I never said they'd be pretty")
;
Out[57]:
In [ ]: