Paquetes utilizados en el análisis:
# Paquetes utilizados en el análisis:
import pandas as pd
import matplotlib.pyplot as plt
# Datos utilizados en el análisis:
data = pd.read_csv('https://raw.githubusercontent.com/percepcioneseconomicas/publicaciones/main/escala_cualitativa/ipeco-2021-03-08.csv', parse_dates=True, index_col='Mes')
data.columns = ['ipeco', 'coyuntura', 'expectativas', 'sea', 'da', 'sef', 'df', 'iif', 'ipecotm']
data.head()
ipeco | coyuntura | expectativas | sea | da | sef | df | iif | ipecotm | |
---|---|---|---|---|---|---|---|---|---|
Mes | |||||||||
2001-12-01 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | 100.00 | NaN |
2002-03-01 | 102.15 | 98.57 | 103.70 | 102.30 | 93.43 | 100.32 | 100.44 | 109.14 | NaN |
2002-06-01 | 108.16 | 86.22 | 116.39 | 105.32 | 48.78 | 113.80 | 128.51 | 111.21 | 103.44 |
2002-09-01 | 101.68 | 106.01 | 100.34 | 113.55 | 93.15 | 109.55 | 80.43 | 103.96 | 104.00 |
2002-12-01 | 100.38 | 84.32 | 106.45 | 86.19 | 82.68 | 106.64 | 113.49 | 101.75 | 103.40 |
A continuación se dividen los indicadores por su valores iniciales:
# Valores iniciales del Ipeco:
ipeco0 = 0.564465028
coyuntura0 = 0.375772273
expectativas0 = 0.688636166
sea0 = 0.503225806
da0 = 0.241887388
sef0 = 0.778145695
df0 = 0.502857143
iif0 = 0.78490566
data['ipeco'] = data['ipeco']*ipeco0
data['coyuntura'] = data['coyuntura']*coyuntura0
data['expectativas'] = data['expectativas']*expectativas0
data['sea'] = data['sea']*sea0
data['da'] = data['da']*da0
data['sef'] = data['sef']*sef0
data['df'] = data['df']*df0
data['iif'] = data['iif']*iif0
data = data.drop('ipecotm', axis=1)
data.head()
ipeco | coyuntura | expectativas | sea | da | sef | df | iif | |
---|---|---|---|---|---|---|---|---|
Mes | ||||||||
2001-12-01 | 56.446503 | 37.577227 | 68.863617 | 50.322581 | 24.188739 | 77.814569 | 50.285714 | 78.490566 |
2002-03-01 | 57.660103 | 37.039873 | 71.411570 | 51.480000 | 22.599539 | 78.063576 | 50.506971 | 85.664604 |
2002-06-01 | 61.052537 | 32.399085 | 80.150363 | 52.999742 | 11.799267 | 88.552980 | 64.622171 | 87.289358 |
2002-09-01 | 57.394804 | 39.835619 | 69.097753 | 57.141290 | 22.531810 | 85.245861 | 40.444800 | 81.598792 |
2002-12-01 | 56.661000 | 31.685118 | 73.305320 | 43.373032 | 19.999249 | 82.981457 | 57.069257 | 79.864151 |
# Histograma del Ipeco
plt.hist(data['ipeco'])
plt.axvline(x=50, color='b', label='Ipeco = 50')
plt.axvline(x=data['ipeco'].mean(), color='r', label='Ipeco promedio')
plt.title('Ipeco')
plt.legend()
<matplotlib.legend.Legend at 0x14a3be6a948>
# Valores optimistas del Ipeco
print((data['ipeco'] > 50).mean())
0.8762376237623762
# Ipeco serie de tiempo:
plt.plot(data['ipeco'])
plt.axhline(y=50, color='b', label='Ipeco = 50')
plt.axhline(y=data['ipeco'].mean(), color='r', label='Ipeco promedio')
plt.title('Ipeco')
plt.legend()
<matplotlib.legend.Legend at 0x14a3bfb43c8>
Descripción de los datos:
mean_median = data.agg(['mean', 'median'])
mean_median.to_csv('mean_median.csv')
mean_median
ipeco | coyuntura | expectativas | sea | da | sef | df | iif | |
---|---|---|---|---|---|---|---|---|
mean | 62.358687 | 49.613529 | 70.854696 | 58.467963 | 40.756001 | 78.122014 | 57.195768 | 77.245869 |
median | 63.347088 | 49.492966 | 73.129718 | 60.132968 | 40.507671 | 81.199503 | 58.235886 | 81.865660 |
min_max = data.agg(['min', 'max'])
min_max.to_csv('min_max.csv')
min_max
ipeco | coyuntura | expectativas | sea | da | sef | df | iif | |
---|---|---|---|---|---|---|---|---|
min | 27.083032 | 11.299472 | 30.947309 | 11.156516 | 7.728302 | 37.498841 | 16.106514 | 28.083925 |
max | 81.288609 | 77.476727 | 86.802589 | 86.112000 | 73.528928 | 95.735265 | 81.694171 | 93.521509 |
# Puntos de corte para la escala del Ipeco
c1, c2, c3, c4 = data['ipeco'].quantile([0.2, 0.4, 0.6, 0.8])
print(c1, c2, c3, c4)
53.038262960935995 59.860387289344004 66.957970551416 73.328522857424
# Histograma del Ipeco
plt.hist(data['ipeco'])
plt.axvline(x=c1, color='r', label='c1')
plt.axvline(x=c2, color='r', label='c2')
plt.axvline(x=c3, color='r', label='c3')
plt.axvline(x=c4, color='r', label='c4')
plt.title('Ipeco')
Text(0.5, 1.0, 'Ipeco')
# Ipeco serie de tiempo
plt.plot(data['ipeco'])
plt.axhline(y=c1, color='r', label='c1')
plt.axhline(y=c2, color='r', label='c2')
plt.axhline(y=c3, color='r', label='c3')
plt.axhline(y=c4, color='r', label='c4')
plt.title('Ipeco')
Text(0.5, 1.0, 'Ipeco')
def gen_escala(datos, variable):
'''
datos = DataFrame.
variable = texto con el nombre de la variable.
'''
c1, c2, c3, c4 = datos[variable].quantile([0.2, 0.4, 0.6, 0.8])
clasificacion = []
for e in datos[variable]:
if e < c1:
clasificacion.append('Muy pesimista')
elif e >= c1 and e < c2:
clasificacion.append('Pesimista')
elif e >= c2 and e < c3:
clasificacion.append('Neutral')
elif e >= c3 and e < c4:
clasificacion.append('Optimista')
else:
clasificacion.append('Muy optimista')
return pd.DataFrame(clasificacion, index=datos[variable].index, columns=['clasificacion'])
clasificacion = gen_escala(data, 'ipeco')
ipeco = pd.concat([data['ipeco'], clasificacion], axis=1)
ipeco.to_csv('ipeco.csv')
pd.set_option('display.max_rows', None)
ipeco
ipeco | clasificacion | |
---|---|---|
Mes | ||
2001-12-01 | 56.446503 | Pesimista |
2002-03-01 | 57.660103 | Pesimista |
2002-06-01 | 61.052537 | Neutral |
2002-09-01 | 57.394804 | Pesimista |
2002-12-01 | 56.661000 | Pesimista |
2003-03-01 | 50.491397 | Muy pesimista |
2003-06-01 | 64.145806 | Neutral |
2003-09-01 | 64.569155 | Neutral |
2003-12-01 | 66.556071 | Neutral |
2004-03-01 | 81.288609 | Muy optimista |
2004-06-01 | 69.079230 | Optimista |
2004-09-01 | 61.910524 | Neutral |
2004-12-01 | 73.871538 | Muy optimista |
2005-03-01 | 72.748253 | Optimista |
2005-05-01 | 72.793410 | Optimista |
2005-06-01 | 73.606240 | Muy optimista |
2005-07-01 | 66.742345 | Neutral |
2005-08-01 | 73.182891 | Optimista |
2005-09-01 | 75.435106 | Muy optimista |
2005-10-01 | 75.717339 | Muy optimista |
2005-11-01 | 76.693863 | Muy optimista |
2005-12-01 | 76.569681 | Muy optimista |
2006-01-01 | 77.032542 | Muy optimista |
2006-02-01 | 80.673342 | Muy optimista |
2006-03-01 | 79.871801 | Muy optimista |
2006-04-01 | 80.069364 | Muy optimista |
2006-05-01 | 78.804963 | Muy optimista |
2006-06-01 | 65.325538 | Neutral |
2006-07-01 | 67.035867 | Optimista |
2006-08-01 | 70.123490 | Optimista |
2006-09-01 | 70.151714 | Optimista |
2006-10-01 | 69.220346 | Optimista |
2006-11-01 | 66.697188 | Neutral |
2006-12-01 | 77.156725 | Muy optimista |
2007-01-01 | 74.086035 | Muy optimista |
2007-02-01 | 68.712328 | Optimista |
2007-03-01 | 73.386098 | Muy optimista |
2007-04-01 | 76.439854 | Muy optimista |
2007-05-01 | 68.074482 | Optimista |
2007-06-01 | 72.866790 | Optimista |
2007-07-01 | 67.515662 | Optimista |
2007-08-01 | 65.833556 | Neutral |
2007-09-01 | 66.589939 | Neutral |
2007-10-01 | 60.397758 | Neutral |
2007-11-01 | 70.687955 | Optimista |
2007-12-01 | 62.881404 | Neutral |
2008-01-01 | 66.347219 | Neutral |
2008-02-01 | 71.715282 | Optimista |
2008-03-01 | 59.884095 | Neutral |
2008-04-01 | 59.330919 | Pesimista |
2008-05-01 | 58.568891 | Pesimista |
2008-06-01 | 56.779537 | Pesimista |
2008-07-01 | 52.455735 | Muy pesimista |
2008-08-01 | 55.430466 | Pesimista |
2008-09-01 | 59.709111 | Pesimista |
2008-10-01 | 50.107561 | Muy pesimista |
2008-11-01 | 54.628925 | Pesimista |
2008-12-01 | 45.749891 | Muy pesimista |
2009-01-01 | 37.519990 | Muy pesimista |
2009-02-01 | 43.158996 | Muy pesimista |
2009-03-01 | 43.949247 | Muy pesimista |
2009-04-01 | 50.051114 | Muy pesimista |
2009-05-01 | 47.883568 | Muy pesimista |
2009-06-01 | 44.908838 | Muy pesimista |
2009-07-01 | 56.271519 | Pesimista |
2009-08-01 | 52.715389 | Muy pesimista |
2009-09-01 | 60.990446 | Neutral |
2009-10-01 | 62.333873 | Neutral |
2009-11-01 | 66.296418 | Neutral |
2009-12-01 | 66.302062 | Neutral |
2010-01-01 | 62.570948 | Neutral |
2010-02-01 | 63.863573 | Neutral |
2010-03-01 | 65.161843 | Neutral |
2010-04-01 | 66.917329 | Neutral |
2010-05-01 | 62.909627 | Neutral |
2010-06-01 | 67.205206 | Optimista |
2010-07-01 | 67.927721 | Optimista |
2010-08-01 | 69.807390 | Optimista |
2010-09-01 | 70.665377 | Optimista |
2010-10-01 | 76.614838 | Muy optimista |
2010-11-01 | 73.397388 | Muy optimista |
2010-12-01 | 73.363520 | Muy optimista |
2011-01-01 | 74.543252 | Muy optimista |
2011-02-01 | 75.779430 | Muy optimista |
2011-03-01 | 68.876023 | Optimista |
2011-04-01 | 78.387258 | Muy optimista |
2011-05-01 | 68.729262 | Optimista |
2011-06-01 | 70.693600 | Optimista |
2011-07-01 | 71.472562 | Optimista |
2011-08-01 | 66.285128 | Neutral |
2011-09-01 | 65.630349 | Neutral |
2011-10-01 | 62.728999 | Neutral |
2011-11-01 | 70.123490 | Optimista |
2011-12-01 | 68.193020 | Optimista |
2012-01-01 | 73.092576 | Optimista |
2012-02-01 | 76.411631 | Muy optimista |
2012-03-01 | 74.746459 | Muy optimista |
2012-04-01 | 72.827278 | Optimista |
2012-05-01 | 73.188536 | Optimista |
2012-06-01 | 76.400342 | Muy optimista |
2012-07-01 | 71.483851 | Optimista |
2012-08-01 | 74.148126 | Muy optimista |
2012-09-01 | 75.779430 | Muy optimista |
2012-10-01 | 79.177509 | Muy optimista |
2012-11-01 | 74.972245 | Muy optimista |
2012-12-01 | 70.812138 | Optimista |
2013-01-01 | 80.645119 | Muy optimista |
2013-02-01 | 78.771095 | Muy optimista |
2013-03-01 | 77.958265 | Muy optimista |
2013-04-01 | 78.737227 | Muy optimista |
2013-05-01 | 76.739021 | Muy optimista |
2013-06-01 | 78.483217 | Muy optimista |
2013-07-01 | 76.829335 | Muy optimista |
2013-08-01 | 72.059605 | Optimista |
2013-09-01 | 75.474619 | Muy optimista |
2013-10-01 | 74.610987 | Muy optimista |
2013-11-01 | 72.714385 | Optimista |
2013-12-01 | 74.046522 | Muy optimista |
2014-01-01 | 76.389052 | Muy optimista |
2014-02-01 | 72.353127 | Optimista |
2014-03-01 | 71.935423 | Optimista |
2014-04-01 | 67.922077 | Optimista |
2014-05-01 | 71.105660 | Optimista |
2014-06-01 | 66.985065 | Optimista |
2014-07-01 | 69.875126 | Optimista |
2014-08-01 | 67.357612 | Optimista |
2014-09-01 | 63.468448 | Neutral |
2014-10-01 | 53.025845 | Muy pesimista |
2014-11-01 | 56.344899 | Pesimista |
2014-12-01 | 54.324114 | Pesimista |
2015-01-01 | 59.342208 | Pesimista |
2015-02-01 | 58.405196 | Pesimista |
2015-03-01 | 61.814565 | Neutral |
2015-04-01 | 55.763500 | Pesimista |
2015-05-01 | 58.653561 | Pesimista |
2015-06-01 | 55.695764 | Pesimista |
2015-07-01 | 55.882038 | Pesimista |
2015-08-01 | 50.000312 | Muy pesimista |
2015-09-01 | 56.632776 | Pesimista |
2015-10-01 | 74.577119 | Muy optimista |
2015-11-01 | 52.811348 | Muy pesimista |
2015-12-01 | 59.302696 | Pesimista |
2016-01-01 | 56.497305 | Pesimista |
2016-02-01 | 50.581711 | Muy pesimista |
2016-03-01 | 56.130402 | Pesimista |
2016-04-01 | 51.338094 | Muy pesimista |
2016-05-01 | 54.753108 | Pesimista |
2016-06-01 | 59.844582 | Pesimista |
2016-07-01 | 53.889476 | Pesimista |
2016-08-01 | 54.820844 | Pesimista |
2016-09-01 | 52.196081 | Muy pesimista |
2016-10-01 | 53.708847 | Pesimista |
2016-11-01 | 57.959269 | Pesimista |
2016-12-01 | 62.638684 | Neutral |
2017-01-01 | 62.802379 | Neutral |
2017-02-01 | 56.378767 | Pesimista |
2017-03-01 | 59.246249 | Pesimista |
2017-04-01 | 58.122964 | Pesimista |
2017-05-01 | 58.100385 | Pesimista |
2017-06-01 | 72.522467 | Optimista |
2017-07-01 | 61.108984 | Neutral |
2017-08-01 | 60.335667 | Neutral |
2017-09-01 | 63.208794 | Neutral |
2017-10-01 | 61.662160 | Neutral |
2018-01-01 | 65.562613 | Neutral |
2018-02-01 | 65.167487 | Neutral |
2018-03-01 | 63.225728 | Neutral |
2018-04-01 | 65.489233 | Neutral |
2018-05-01 | 68.001102 | Optimista |
2018-06-01 | 56.965811 | Pesimista |
2018-07-01 | 60.228418 | Neutral |
2018-08-01 | 61.543622 | Neutral |
2018-09-01 | 52.811348 | Muy pesimista |
2018-10-01 | 56.215072 | Pesimista |
2018-11-01 | 52.788769 | Muy pesimista |
2018-12-01 | 47.832766 | Muy pesimista |
2019-01-01 | 52.399289 | Muy pesimista |
2019-02-01 | 49.294731 | Muy pesimista |
2019-03-01 | 52.512182 | Muy pesimista |
2019-04-01 | 52.647653 | Muy pesimista |
2019-05-01 | 55.492557 | Pesimista |
2019-06-01 | 53.087936 | Pesimista |
2019-07-01 | 55.594161 | Pesimista |
2019-08-01 | 54.747463 | Pesimista |
2019-09-01 | 55.368375 | Pesimista |
2019-10-01 | 37.102286 | Muy pesimista |
2019-11-01 | 39.038401 | Muy pesimista |
2019-12-01 | 27.083032 | Muy pesimista |
2020-01-01 | 35.578231 | Muy pesimista |
2020-02-01 | 40.443919 | Muy pesimista |
2020-03-01 | 38.507804 | Muy pesimista |
2020-04-01 | 28.003110 | Muy pesimista |
2020-05-01 | 28.957056 | Muy pesimista |
2020-06-01 | 35.572586 | Muy pesimista |
2020-07-01 | 34.991187 | Muy pesimista |
2020-08-01 | 42.317943 | Muy pesimista |
2020-09-01 | 40.195555 | Muy pesimista |
2020-10-01 | 43.074326 | Muy pesimista |
2020-11-01 | 44.598382 | Muy pesimista |
2020-12-01 | 37.813512 | Muy pesimista |
2021-01-01 | 40.043149 | Muy pesimista |
2021-02-01 | 49.046366 | Muy pesimista |