finished:

Get raw data on disaggregated HICP from Dados and compute annual inflation rates by item


In [1]:
%matplotlib inline

import numpy as np
import pandas as pd

import os

In [2]:
path_data = 'G://APM//Dados//EUR'

In [3]:
os.listdir(path_data)


Out[3]:
['backup_IHPC',
 'CN_EUR.xlsm',
 'CN_EUR_old.xlsm',
 'COMEXT_EUR.xlsm',
 'COMEXT_GCE_EUR.xlsm',
 'CONF_CE_EUR.xlsm',
 'CONS_EUR.xlsm',
 'CONST_EUR.xlsm',
 'CTUP_EUR.xlsm',
 'DESEM_EUR.xlsm',
 'FBCF_EUR.xlsm',
 'FBCF_EUR_old.xlsm',
 'IHPC_AGREG_EUR.xlsm',
 'IHPC_AGREG_PAISES_EUR.xlsm',
 'IHPC_PAISES_EUR.xlsm',
 'IHPC_SUBIND_EUR.xlsm',
 'IND_EUR.xlsm',
 'IPP_EUR.xlsm',
 'PMI_EUR.xlsm',
 'PMI_PAISES.xlsm',
 'TCE_EUR.xlsm',
 'VAB_EUR.xlsm',
 'VAB_EUR_old.xlsm',
 '~$CN_EUR.xlsm',
 '~$CONF_CE_EUR.xlsm',
 '~$CONS_EUR.xlsm',
 '~$DESEM_EUR.xlsm',
 '~$IHPC_AGREG_EUR.xlsm',
 '~$IHPC_PAISES_EUR.xlsm',
 '~$IPP_EUR.xlsm',
 '~$TCE_EUR.xlsm']

Get aggregated HICP data and the main groups

76451 is the headline HICP


In [19]:
file_agreg = path_data + '/IHPC_AGREG_EUR.xlsm'
df_agreg = pd.read_excel(file_agreg,sheetname='DADOS_AGREG',na_values='ND',
                         skiprows=[0,1,2,],index_col=0,)
df_agreg.head()


Out[19]:
76451 139787 139805 139823 139841 139859 139877 139895 139913
NaT Índice Harmonizado de Preços no Consumidor (IH... Bens( Países da Área do Euro (composição variá... Alimentares( Países da Área do Euro (composiçã... Alimentares não transformados( Países da Área ... Alimentares transformados( Países da Área do E... Bens Indústriais( Países da Área do Euro (comp... Bens Indústriais não Energéticos( Países da Ár... Energéticos( Países da Área do Euro (composiçã... Serviços( Países da Área do Euro (composição v...
1990-01-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1990-02-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1990-03-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN
1990-04-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN

In [20]:
# save the names of the items as a dictionary
# remove the row with the names
agreg_names = dict(df_agreg.iloc[0])
agreg_names


Out[20]:
{76451: 'Índice Harmonizado de Preços no Consumidor (IHPC) dos Países da UE - base 2015=100 - Total e Classes( 00          IHPC (índice global), Países da Área do Euro (composição variável) ) [Cod.:  76451, Mensal, Índice, x10** 0] (Conv.Period.: Média)',
 139787: 'Bens( Países da Área do Euro (composição variável) ) [Cod.:  139787, Mensal, Índice, x10** 0] (Conv.Period.: Média)',
 139805: 'Alimentares( Países da Área do Euro (composição variável) ) [Cod.:  139805, Mensal, Índice, x10** 0] (Conv.Period.: Média)',
 139823: 'Alimentares não transformados( Países da Área do Euro (composição variável) ) [Cod.:  139823, Mensal, Índice, x10** 0] (Conv.Period.: Média)',
 139841: 'Alimentares transformados( Países da Área do Euro (composição variável) ) [Cod.:  139841, Mensal, Índice, x10** 0] (Conv.Period.: Média)',
 139859: 'Bens Indústriais( Países da Área do Euro (composição variável) ) [Cod.:  139859, Mensal, Índice, x10** 0] (Conv.Period.: Média)',
 139877: 'Bens Indústriais não Energéticos( Países da Área do Euro (composição variável) ) [Cod.:  139877, Mensal, Índice, x10** 0] (Conv.Period.: Média)',
 139895: 'Energéticos( Países da Área do Euro (composição variável) ) [Cod.:  139895, Mensal, Índice, x10** 0] (Conv.Period.: Média)',
 139913: 'Serviços( Países da Área do Euro (composição variável) ) [Cod.:  139913, Mensal, Índice, x10** 0] (Conv.Period.: Média)'}

In [5]:
df_agreg = df_agreg.drop(df_agreg.index[0])
df_agreg.tail()


Out[5]:
76451 139787 139805 139823 139841 139859 139877 139895 139913
2016-01-01 98.72 97.78 100.37 100.39 100.35 96.4 97.64 93.3 99.92
2016-02-01 98.88 97.73 100.4 100.42 100.38 96.3 97.99 92.07 100.35
2016-03-01 100.1 99.54 100.57 100.89 100.37 98.98 101.34 93.03 100.82
2016-04-01 100.14 99.94 100.86 101.36 100.56 99.44 101.95 93.1 100.41
2016-05-01 100.49 NaN 101.06 101.93 100.53 NaN 101.97 94.62 100.74

In [6]:
mask_rows_healine = df_agreg.index.year >= 1995
df_headline = df_agreg.loc[mask_rows_healine,[76451]]
df_headline.head()


Out[6]:
76451
1995-01-01 NaN
1995-02-01 NaN
1995-03-01 NaN
1995-04-01 NaN
1995-05-01 NaN

In [7]:
file_items = path_data + '/IHPC_SUBIND_EUR.xlsm'

In [8]:
rows_to_skip = list(np.arange(3))
#rows_to_skip += list(np.arange(5,17))
rows_to_skip


Out[8]:
[0, 1, 2]

In [9]:
df_ind_items = pd.read_excel(file_items,sheetname='DADOS_SUBIND',na_values='ND',
                         skiprows=rows_to_skip,index_col=0,)
df_ind_items.head()


Out[9]:
182759 182777 182831 182849 182741 182795 182813 182867 182885 182921 ... 184325 240469 240487 240505 100281 241333 241405 241441 184343 184361
NaT Carne( Países da Área do Euro (composição vari... Peixe( Países da Área do Euro (composição vari... Frutas( Países da Área do Euro (composição var... Produtos hortícolas incluindo batata e outros ... Pão e cereais( Países da Área do Euro (composi... Leite, queijo e ovos( Países da Área do Euro (... Óleos e gorduras( Países da Área do Euro (comp... Acúcar, compota, mel, xaropes, choc. e prod. d... Produtos alimentares n.e.( Países da Área do E... Café, chá e cacau( Países da Área do Euro (com... ... Seguros relacionados com os transportes( Paíse... Serviços médicos e paramédicos( Países da Área... Serviços de medicina dentária( Países da Área ... Serviços hospitalares( Países da Área do Euro ... Índice Harmonizado de Preços no Consumidor (IH... Protecção Social( Países da Área do Euro (comp... Seguros relacionados com a saúde( Países da Ár... Outros seguros( Países da Área do Euro (compos... Serviços financeiros n.e.( Países da Área do E... Outros serviços n.e.( Países da Área do Euro (...
1995-01-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1995-02-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1995-03-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1995-04-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 93 columns


In [10]:
# save the names of the items as a dictionary
# remove the row with the names
item_names = dict(df_ind_items.iloc[0])
item_names;
df_ind_items = df_ind_items.drop(df_ind_items.index[0])

In [11]:
df_ind_items.head()


Out[11]:
182759 182777 182831 182849 182741 182795 182813 182867 182885 182921 ... 184325 240469 240487 240505 100281 241333 241405 241441 184343 184361
1995-01-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1995-02-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1995-03-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1995-04-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
1995-05-01 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 93 columns


In [12]:
## Join headline and items in a single data frame
print(df_headline.shape)
print(df_ind_items.shape)


(257, 1)
(256, 93)

In [13]:
df_headline = df_headline[df_headline.index.year>=1999]

df_ind_items = df_ind_items[df_ind_items.index.year>=1999]

In [14]:
df_ind_items = df_headline.join(other=df_ind_items)
df_ind_items.head()


Out[14]:
76451 182759 182777 182831 182849 182741 182795 182813 182867 182885 ... 184325 240469 240487 240505 100281 241333 241405 241441 184343 184361
1999-01-01 73.87 71.97 68.21 66.64 76.49 71.21 75.94 70.13 77.03 82.79 ... 71.18 NaN NaN NaN 63.99 NaN NaN NaN 73.68 70.42
1999-02-01 74.06 71.89 67.2 67.54 76.58 71.28 75.89 70.93 77.18 82.82 ... 71.69 NaN NaN NaN 64.42 NaN NaN NaN 73.75 70.53
1999-03-01 74.27 71.75 67.35 68.22 76.89 71.36 75.91 71.61 77.27 83.07 ... 72.1 NaN NaN NaN 64.43 NaN NaN NaN 73.74 70.55
1999-04-01 74.51 71.65 67.56 68.76 78.04 71.41 75.86 72.05 77.34 83.16 ... 72.25 NaN NaN NaN 64.43 NaN NaN NaN 73.88 70.61
1999-05-01 74.57 71.54 67.5 70.41 77.25 71.43 75.77 72.35 77.39 83.35 ... 72.85 NaN NaN NaN 64.4 NaN NaN NaN 74.25 70.71

5 rows × 94 columns


In [15]:
df_ind_items.to_csv('raw_data_items.csv',index=True,index_label='date',header=True)

In [16]:
df_ind_items.shape


Out[16]:
(209, 94)

In [17]:
df_ind_items.tail()


Out[17]:
76451 182759 182777 182831 182849 182741 182795 182813 182867 182885 ... 184325 240469 240487 240505 100281 241333 241405 241441 184343 184361
2016-01-01 98.72 100.06 104.09 99.04 99.79 100.14 99.41 102.97 100.37 99.9 ... 100.8 100.51 100.15 101.34 101.19 101.2 102.01 102.39 100.1 99.98
2016-02-01 98.88 99.91 102.4 99.92 100.58 100.16 99.39 102.97 100.22 100.05 ... 100.09 100.72 100.4 101.79 101.23 101.35 102.29 102.4 100.33 99.98
2016-03-01 100.1 99.84 101.89 101.07 102.22 100.2 99.35 102.16 100.49 99.87 ... 100.02 100.64 100.5 101.84 101.26 101.45 102.4 102.4 100.35 100.05
2016-04-01 100.14 99.85 102.47 100.75 104.1 100.29 99.11 102.03 100.84 100.24 ... 100.99 100.69 100.76 101.84 101.31 101.61 102.74 102.39 99.41 100.2
2016-05-01 100.49 NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

5 rows × 94 columns


In [ ]: