Skip to content

Instantly share code, notes, and snippets.

@predicador37
Last active August 29, 2015 14:16
Show Gist options
  • Save predicador37/94eacb48d4461cbfc98c to your computer and use it in GitHub Desktop.
Save predicador37/94eacb48d4461cbfc98c to your computer and use it in GitHub Desktop.
Ejemplo de procesado y visualización de datos estadísticos de Cantabria usando la web del ICANE
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#Ejemplo de procesado y visualización de datos estadísticos de Cantabria usando la web del ICANE\n",
"\n",
"En el siguiente cuaderno se muestran tres ejemplos sencillos de manipulación y representación de datos obtenidos a través de las interfaces web del [ICANE](http://www.icane.es/metadata). Para ello se ha utilizado [Pandas](http://pandas.pydata.org/), la biblioteca de análisis de datos por excelencia en Python; [pyicane](https://github.com/predicador37/pyicane), una biblioteca desarrollada por personal del ICANE para facilitar la extracción automática de datos a partir del formato [JSON](http://es.wikipedia.org/wiki/JSON) y [Vincent](https://github.com/wrobstory/vincent), una librería de visualización que abstrae la complejidad de [Vega](http://trifacta.github.io/vega/) (JSON), a su vez abstracción de [D3.js](http://d3js.org/) en [Javascript](http://es.wikipedia.org/wiki/JavaScript)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Ejemplo de obtención de datos\n",
"\n",
"En primer lugar, se mostrará una forma sencilla de extraer datos de forma automatizada usando la API de datos del ICANE.\n",
"\n",
"Para ello, se tomará como ejemplo la serie de [Revisiones Anuales del Padrón Municipal de Habitantes](http://www.icane.es/data/municipal-register-annual-review-municipality#timeseries)."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Variables</th>\n",
" <th>Municipios</th>\n",
" <th>Valor</th>\n",
" <th>cod_ine</th>\n",
" <th>nombres</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Año</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td> Variación interanual</td>\n",
" <td> 39001 - Alfoz de Lloredo</td>\n",
" <td>-1.23</td>\n",
" <td> 39001</td>\n",
" <td> Alfoz de Lloredo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td> Variación interanual</td>\n",
" <td> 39002 - Ampuero</td>\n",
" <td>-0.63</td>\n",
" <td> 39002</td>\n",
" <td> Ampuero</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td> Variación interanual</td>\n",
" <td> 39003 - Anievas</td>\n",
" <td>-1.80</td>\n",
" <td> 39003</td>\n",
" <td> Anievas</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td> Variación interanual</td>\n",
" <td> 39004 - Arenas de Iguña</td>\n",
" <td>-1.99</td>\n",
" <td> 39004</td>\n",
" <td> Arenas de Iguña</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2014</th>\n",
" <td> Variación interanual</td>\n",
" <td> 39005 - Argoños</td>\n",
" <td>-0.35</td>\n",
" <td> 39005</td>\n",
" <td> Argoños</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Variables Municipios Valor cod_ine \\\n",
"Año \n",
"2014 Variación interanual 39001 - Alfoz de Lloredo -1.23 39001 \n",
"2014 Variación interanual 39002 - Ampuero -0.63 39002 \n",
"2014 Variación interanual 39003 - Anievas -1.80 39003 \n",
"2014 Variación interanual 39004 - Arenas de Iguña -1.99 39004 \n",
"2014 Variación interanual 39005 - Argoños -0.35 39005 \n",
"\n",
" nombres \n",
"Año \n",
"2014 Alfoz de Lloredo \n",
"2014 Ampuero \n",
"2014 Anievas \n",
"2014 Arenas de Iguña \n",
"2014 Argoños "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from pyicane import pyicane\n",
"from collections import OrderedDict\n",
"\n",
"#Obtención de datos de Revisión Anual del PMH desde la web del ICANE\n",
"rapmh = pyicane.TimeSeries.get('municipal-register-annual-review-municipality')\n",
"\n",
"#Conversión a dataframe\n",
"data = rapmh.data_as_dataframe()\n",
"\n",
"#Filtrado de variables y año\n",
"varint = data[(data['Variables'] == \n",
" 'Variación interanual') & (data.index == '2014')]\n",
"\n",
"#Filtrado del total Cantabria\n",
"varint = varint.ix[:-1]\n",
"\n",
"#Obtención de código INE y nombre de municipio en columnas separadas\n",
"cod_ine = [item.split(' - ')[0].lstrip() for item in varint['Municipios']]\n",
"nombres = [item.split(' - ')[1].lstrip() for item in varint['Municipios']]\n",
"varint['cod_ine'] = cod_ine\n",
"varint['nombres'] = nombres\n",
"\n",
"#Conversión automática de tipos de datos\n",
"varint = varint.convert_objects(convert_numeric=True)\n",
"varint.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Mapa de coropletas\n",
"A continuación, se mostrará un ejemplo de representación de datos en mapas en forma de coropletas.\n",
"\n",
"Para este ejemplo, se ha utilizado un mapa en formato [GeoJSON](http://geojson.org/) realizado con datos del Gobierno de Cantabria-IGN-CNIG, límites inscritos en el Registro Central de Cartografía a fecha 13 de Diciembre de 2012 y proporcionado por la [Consejería de Medio Ambiente, Ordenación del Territorio y Urbanismo](http://cartografia.cantabria.es/Descargas).\n",
"\n",
"Con objeto de obtener una representación más manejable, previamente se convirtió el mapa a formato [TopoJSON](https://github.com/mbostock/topojson), utilizado posteriormente para dibujarlo. Para servirlo, se ha subido este archivo a la [nube S3](http://d1jbhcb2qvxl2c.cloudfront.net/cantabria.topo.json) de Amazon.\n",
"\n",
"Concretamente lo que se pretende representar es la tasa de variación anual de población según la serie anterior."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <script>\n",
" \n",
" function vct_load_lib(url, callback){\n",
" if(typeof d3 !== 'undefined' &&\n",
" url === 'http://d3js.org/d3.v3.min.js'){\n",
" callback()\n",
" }\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = true;\n",
" s.onreadystatechange = s.onload = callback;\n",
" s.onerror = function(){\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" };\n",
" var vincent_event = new CustomEvent(\n",
" \"vincent_libs_loaded\",\n",
" {bubbles: true, cancelable: true}\n",
" );\n",
" \n",
" function load_all_libs(){\n",
" console.log('Loading Vincent libs...')\n",
" vct_load_lib('http://d3js.org/d3.v3.min.js', function(){\n",
" vct_load_lib('http://d3js.org/d3.geo.projection.v0.min.js', function(){\n",
" vct_load_lib('http://wrobstory.github.io/d3-cloud/d3.layout.cloud.js', function(){\n",
" vct_load_lib('http://wrobstory.github.io/vega/vega.v1.3.3.js', function(){\n",
" window.dispatchEvent(vincent_event);\n",
" });\n",
" });\n",
" });\n",
" });\n",
" };\n",
" if(typeof define === \"function\" && define.amd){\n",
" if (window['d3'] === undefined ||\n",
" window['topojson'] === undefined){\n",
" require.config(\n",
" {paths: {\n",
" d3: 'http://d3js.org/d3.v3.min',\n",
" topojson: 'http://d3js.org/topojson.v1.min'\n",
" }\n",
" }\n",
" );\n",
" require([\"d3\"], function(d3){\n",
" console.log('Loading Vincent from require.js...')\n",
" window.d3 = d3;\n",
" require([\"topojson\"], function(topojson){\n",
" window.topojson = topojson;\n",
" load_all_libs();\n",
" });\n",
" });\n",
" } else {\n",
" load_all_libs();\n",
" };\n",
" }else{\n",
" console.log('Require.js not found, loading manually...')\n",
" load_all_libs();\n",
" };\n",
"\n",
" </script>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div id=\"vis81ddbd57721a458abf3bbaf5de7a8f76\"></div>\n",
"<script>\n",
" ( function() {\n",
" var _do_plot = function() {\n",
" if (typeof vg === 'undefined') {\n",
" window.addEventListener('vincent_libs_loaded', _do_plot)\n",
" return;\n",
" }\n",
" vg.parse.spec({\"axes\": [], \"data\": [{\"name\": \"table\", \"values\": [{\"x\": 39001, \"y\": -1.23}, {\"x\": 39002, \"y\": -0.63}, {\"x\": 39003, \"y\": -1.8}, {\"x\": 39004, \"y\": -1.99}, {\"x\": 39005, \"y\": -0.35}, {\"x\": 39006, \"y\": -0.71}, {\"x\": 39007, \"y\": 0.2}, {\"x\": 39008, \"y\": 1.54}, {\"x\": 39009, \"y\": 0.05}, {\"x\": 39010, \"y\": -0.54}, {\"x\": 39011, \"y\": -0.25}, {\"x\": 39012, \"y\": 0.23}, {\"x\": 39013, \"y\": -3.38}, {\"x\": 39014, \"y\": -2.87}, {\"x\": 39015, \"y\": 0.1}, {\"x\": 39016, \"y\": -1.04}, {\"x\": 39017, \"y\": -2.48}, {\"x\": 39018, \"y\": 1.41}, {\"x\": 39019, \"y\": 1.53}, {\"x\": 39020, \"y\": -0.51}, {\"x\": 39021, \"y\": -1.2}, {\"x\": 39022, \"y\": 0.45}, {\"x\": 39023, \"y\": -0.42}, {\"x\": 39024, \"y\": -2.27}, {\"x\": 39025, \"y\": -1.9}, {\"x\": 39026, \"y\": -2.03}, {\"x\": 39027, \"y\": -0.18}, {\"x\": 39028, \"y\": 2.78}, {\"x\": 39029, \"y\": -2.08}, {\"x\": 39030, \"y\": -1.69}, {\"x\": 39031, \"y\": -0.91}, {\"x\": 39032, \"y\": -3.27}, {\"x\": 39033, \"y\": -0.61}, {\"x\": 39034, \"y\": 0.0}, {\"x\": 39035, \"y\": -1.12}, {\"x\": 39036, \"y\": -1.11}, {\"x\": 39037, \"y\": -2.67}, {\"x\": 39038, \"y\": -2.03}, {\"x\": 39039, \"y\": -3.27}, {\"x\": 39040, \"y\": -1.56}, {\"x\": 39041, \"y\": 1.28}, {\"x\": 39042, \"y\": -0.29}, {\"x\": 39043, \"y\": 1.81}, {\"x\": 39044, \"y\": -0.6}, {\"x\": 39045, \"y\": -0.71}, {\"x\": 39046, \"y\": -0.06}, {\"x\": 39047, \"y\": -1.12}, {\"x\": 39048, \"y\": -1.14}, {\"x\": 39049, \"y\": 1.13}, {\"x\": 39050, \"y\": 0.62}, {\"x\": 39051, \"y\": 4.23}, {\"x\": 39052, \"y\": 1.43}, {\"x\": 39053, \"y\": 4.89}, {\"x\": 39054, \"y\": 0.86}, {\"x\": 39055, \"y\": -2.13}, {\"x\": 39056, \"y\": 0.28}, {\"x\": 39057, \"y\": 0.53}, {\"x\": 39058, \"y\": -2.27}, {\"x\": 39059, \"y\": -1.16}, {\"x\": 39060, \"y\": -0.26}, {\"x\": 39061, \"y\": -1.13}, {\"x\": 39062, \"y\": 0.82}, {\"x\": 39063, \"y\": -2.32}, {\"x\": 39064, \"y\": -1.73}, {\"x\": 39065, \"y\": -1.06}, {\"x\": 39066, \"y\": -0.1}, {\"x\": 39067, \"y\": -4.21}, {\"x\": 39068, \"y\": -0.76}, {\"x\": 39069, \"y\": 0.25}, {\"x\": 39070, \"y\": -0.57}, {\"x\": 39071, \"y\": -2.25}, {\"x\": 39072, \"y\": -1.26}, {\"x\": 39073, \"y\": 1.06}, {\"x\": 39074, \"y\": 0.41}, {\"x\": 39075, \"y\": -0.78}, {\"x\": 39076, \"y\": -0.43}, {\"x\": 39077, \"y\": -2.73}, {\"x\": 39078, \"y\": -0.57}, {\"x\": 39079, \"y\": -1.41}, {\"x\": 39080, \"y\": -0.69}, {\"x\": 39081, \"y\": -2.14}, {\"x\": 39082, \"y\": -0.35}, {\"x\": 39083, \"y\": -1.92}, {\"x\": 39084, \"y\": -2.72}, {\"x\": 39085, \"y\": 0.33}, {\"x\": 39086, \"y\": -1.86}, {\"x\": 39087, \"y\": -1.15}, {\"x\": 39088, \"y\": -1.43}, {\"x\": 39089, \"y\": -1.99}, {\"x\": 39090, \"y\": 1.37}, {\"x\": 39091, \"y\": -0.61}, {\"x\": 39092, \"y\": -3.92}, {\"x\": 39093, \"y\": -1.83}, {\"x\": 39094, \"y\": 0.2}, {\"x\": 39095, \"y\": -0.07}, {\"x\": 39096, \"y\": -1.95}, {\"x\": 39097, \"y\": -0.87}, {\"x\": 39098, \"y\": -0.87}, {\"x\": 39099, \"y\": 0.16}, {\"x\": 39100, \"y\": -1.94}, {\"x\": 39101, \"y\": -3.82}, {\"x\": 39102, \"y\": -1.57}]}, {\"format\": {\"feature\": \"cantabria\", \"type\": \"topojson\"}, \"name\": \"cantabria\", \"transform\": [{\"as\": \"value\", \"default\": \"noval\", \"key\": \"data.properties.COD_INE\", \"type\": \"zip\", \"with\": \"table\", \"withKey\": \"data.x\"}, {\"test\": \"d.path!='noval' && d.value!='noval'\", \"type\": \"filter\"}, {\"center\": [-4.0, 43.13], \"projection\": \"mercator\", \"scale\": 20000, \"translate\": [480, 250], \"type\": \"geopath\", \"value\": \"data\"}], \"url\": \"http://d1jbhcb2qvxl2c.cloudfront.net/cantabria.topo.json\"}], \"height\": 500, \"legends\": [{\"fill\": \"color\", \"offset\": 0, \"properties\": {}, \"title\": \"Revisi\\u00f3n anual PMH: variaci\\u00f3n interanual de poblaci\\u00f3n\"}], \"marks\": [{\"from\": {\"data\": \"cantabria\"}, \"properties\": {\"enter\": {\"path\": {\"field\": \"path\"}, \"stroke\": {\"value\": \"#000000\"}, \"strokeOpacity\": {\"value\": 0.5}}, \"update\": {\"fill\": {\"field\": \"value.data.y\", \"scale\": \"color\"}}}, \"type\": \"path\"}], \"padding\": \"auto\", \"scales\": [{\"domain\": [-4.21, 1.524999999999999], \"name\": \"color\", \"range\": [\"#f7fcf0\", \"#e0f3db\", \"#ccebc5\", \"#a8ddb5\", \"#7bccc4\", \"#4eb3d3\", \"#2b8cbe\", \"#0868ac\", \"#084081\"], \"type\": \"quantize\"}], \"width\": 960}, function(chart) {\n",
" chart({el: \"#vis81ddbd57721a458abf3bbaf5de7a8f76\"}).update();\n",
" });\n",
" };\n",
" _do_plot();\n",
" })();\n",
"</script>\n",
"<style>.vega canvas {width: 100%;}</style>\n",
" "
],
"text/plain": [
"<vincent.charts.Map at 0x39d0e10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import vincent\n",
"from vincent.values import ValueRef\n",
"from IPython.display import display\n",
"import requests\n",
"\n",
"vincent.core.initialize_notebook()\n",
"\n",
"#Obtención de los datos del mapa municipal en topojson\n",
"cantabria_topo = r'http://d1jbhcb2qvxl2c.cloudfront.net/cantabria.topo.json'\n",
"geo_data = [{'name': 'cantabria',\n",
" 'url': cantabria_topo,\n",
" 'feature': 'cantabria'}]\n",
"\n",
"#Creación del gráfico y asociación de los datos al mapa\n",
"vis = vincent.Map(geo_data=geo_data, data=varint, scale=20000, \n",
" projection = 'mercator', center = [-4.00, 43.13],\n",
" data_bind='Valor', data_key='cod_ine',\n",
" map_key={'cantabria': 'properties.COD_INE'})\n",
"vis.marks[0].properties.enter.stroke_opacity = ValueRef(value=0.5)\n",
"vis.legend(title=\"Revisión anual PMH: variación interanual de población\")\n",
"display(vis)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Operaciones con datos\n",
"\n",
"En las siguientes secciones se observará cómo trabajar con datos ya extraídos automáticamente. En concreto, se realizarán operaciones de filtrado, limpieza, pivotaje y manipulación de datos en general.\n",
"\n",
"Para estos ejemplos se utilizará la serie de [Precios corrientes](http://www.icane.es/data/quarterly-accounting-cantabria-base-2008-current-prices#content) de la Contabilidad trimestral de Cantabria, Base 2008 y CNAE 2009."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Sector</th>\n",
" <th>Tipo de ajuste</th>\n",
" <th>Variables</th>\n",
" <th>Valor</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Trimestre</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2001 - 1</th>\n",
" <td> 1 PIB total</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 5.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001 - 2</th>\n",
" <td> 1 PIB total</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 8.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001 - 3</th>\n",
" <td> 1 PIB total</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 9.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001 - 4</th>\n",
" <td> 1 PIB total</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 9.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002 - 1</th>\n",
" <td> 1 PIB total</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 8.8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Sector Tipo de ajuste \\\n",
"Trimestre \n",
"2001 - 1 1 PIB total Ajustada de estacionalidad y efecto calendario \n",
"2001 - 2 1 PIB total Ajustada de estacionalidad y efecto calendario \n",
"2001 - 3 1 PIB total Ajustada de estacionalidad y efecto calendario \n",
"2001 - 4 1 PIB total Ajustada de estacionalidad y efecto calendario \n",
"2002 - 1 1 PIB total Ajustada de estacionalidad y efecto calendario \n",
"\n",
" Variables Valor \n",
"Trimestre \n",
"2001 - 1 Tasa de variación interanual 5.7 \n",
"2001 - 2 Tasa de variación interanual 8.7 \n",
"2001 - 3 Tasa de variación interanual 9.4 \n",
"2001 - 4 Tasa de variación interanual 9.3 \n",
"2002 - 1 Tasa de variación interanual 8.8 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import datetime as dt\n",
"import calendar\n",
"import time\n",
"\n",
"#Obtención de datos de CTC desde la web del ICANE\n",
"contrim_raw = pyicane.TimeSeries.get('quarterly-accounting-cantabria-base-2008-current-prices')\n",
"contrim_df = contrim_raw.data_as_dataframe()\n",
"\n",
"#Filtrado de datos para conseguir:\n",
"# Tasa de variación interanual\n",
"# Ajustada de estacionalidad y efecto calendario\n",
"# PIB total\n",
"tvarint = contrim_df[(contrim_df['Variables'] == \n",
" 'Tasa de variación interanual') & (contrim_df['Tipo de ajuste'] == \n",
" 'Ajustada de estacionalidad y efecto calendario')& (contrim_df['Sector'] == \n",
" '1 PIB total')]\n",
"\n",
"#Filtrado de filas con valor desconocido\n",
"tvarint = tvarint[tvarint['Valor']!='..'] \n",
"tvarint.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Una vez extraídos y filtrados los datos, será necesario crear un índice temporal a partir de los datos de año y trimestre:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>Sector</th>\n",
" <th>1 PIB total</th>\n",
" </tr>\n",
" <tr>\n",
" <th>fechas</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2001-03-31</th>\n",
" <td> 5.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001-06-30</th>\n",
" <td> 8.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001-09-30</th>\n",
" <td> 9.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001-12-31</th>\n",
" <td> 9.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002-03-31</th>\n",
" <td> 8.8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Sector 1 PIB total\n",
"fechas \n",
"2001-03-31 5.7\n",
"2001-06-30 8.7\n",
"2001-09-30 9.4\n",
"2001-12-31 9.3\n",
"2002-03-31 8.8"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Extracción del año y el trimestre y generación de fechas\n",
"anyo, trimestre = zip(*(s.split(\" - \") for s in list(tvarint.index)))\n",
"fechas = [dt.datetime(int(y) , int(q)*3, int(calendar.monthrange(int(y), int(q)*3)[1])) for q,y in zip(trimestre,anyo)]\n",
"\n",
"#Adición de columna de fechas a la serie\n",
"tvarint['fechas'] = fechas\n",
"\n",
"#Pivotaje para obtener una columna por categoría\n",
"tvarint = tvarint.pivot(index='fechas',columns='Sector', values='Valor')\n",
"tvarint.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Gráfico de línea\n",
"\n",
"Es posible utilizar los datos obtenidos para representar gráficamente la serie temporal a través de un gráfico de línea y utilizando un etiquetado sencillo:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div id=\"vis918384274eab407882feaf6f95a8eefd\"></div>\n",
"<script>\n",
" ( function() {\n",
" var _do_plot = function() {\n",
" if (typeof vg === 'undefined') {\n",
" window.addEventListener('vincent_libs_loaded', _do_plot)\n",
" return;\n",
" }\n",
" vg.parse.spec({\"axes\": [{\"scale\": \"x\", \"title\": \"Tiempo\", \"type\": \"x\"}, {\"scale\": \"y\", \"title\": \"Valor\", \"type\": \"y\"}], \"data\": [{\"name\": \"table\", \"values\": [{\"col\": \"1 PIB total\", \"idx\": 985989600000, \"val\": 5.7}, {\"col\": \"1 PIB total\", \"idx\": 993852000000, \"val\": 8.7}, {\"col\": \"1 PIB total\", \"idx\": 1001800800000, \"val\": 9.4}, {\"col\": \"1 PIB total\", \"idx\": 1009753200000, \"val\": 9.3}, {\"col\": \"1 PIB total\", \"idx\": 1017529200000, \"val\": 8.8}, {\"col\": \"1 PIB total\", \"idx\": 1025388000000, \"val\": 7.0}, {\"col\": \"1 PIB total\", \"idx\": 1033336800000, \"val\": 6.6}, {\"col\": \"1 PIB total\", \"idx\": 1041289200000, \"val\": 6.7}, {\"col\": \"1 PIB total\", \"idx\": 1049061600000, \"val\": 5.7}, {\"col\": \"1 PIB total\", \"idx\": 1056924000000, \"val\": 6.2}, {\"col\": \"1 PIB total\", \"idx\": 1064872800000, \"val\": 6.2}, {\"col\": \"1 PIB total\", \"idx\": 1072825200000, \"val\": 5.7}, {\"col\": \"1 PIB total\", \"idx\": 1080684000000, \"val\": 6.5}, {\"col\": \"1 PIB total\", \"idx\": 1088546400000, \"val\": 6.6}, {\"col\": \"1 PIB total\", \"idx\": 1096495200000, \"val\": 7.1}, {\"col\": \"1 PIB total\", \"idx\": 1104447600000, \"val\": 8.1}, {\"col\": \"1 PIB total\", \"idx\": 1112220000000, \"val\": 8.0}, {\"col\": \"1 PIB total\", \"idx\": 1120082400000, \"val\": 8.6}, {\"col\": \"1 PIB total\", \"idx\": 1128031200000, \"val\": 8.8}, {\"col\": \"1 PIB total\", \"idx\": 1135983600000, \"val\": 8.2}, {\"col\": \"1 PIB total\", \"idx\": 1143756000000, \"val\": 8.3}, {\"col\": \"1 PIB total\", \"idx\": 1151618400000, \"val\": 7.4}, {\"col\": \"1 PIB total\", \"idx\": 1159567200000, \"val\": 7.4}, {\"col\": \"1 PIB total\", \"idx\": 1167519600000, \"val\": 7.5}, {\"col\": \"1 PIB total\", \"idx\": 1175292000000, \"val\": 7.4}, {\"col\": \"1 PIB total\", \"idx\": 1183154400000, \"val\": 7.7}, {\"col\": \"1 PIB total\", \"idx\": 1191103200000, \"val\": 6.9}, {\"col\": \"1 PIB total\", \"idx\": 1199055600000, \"val\": 6.5}, {\"col\": \"1 PIB total\", \"idx\": 1206914400000, \"val\": 6.6}, {\"col\": \"1 PIB total\", \"idx\": 1214776800000, \"val\": 4.5}, {\"col\": \"1 PIB total\", \"idx\": 1222725600000, \"val\": 3.6}, {\"col\": \"1 PIB total\", \"idx\": 1230678000000, \"val\": 0.2}, {\"col\": \"1 PIB total\", \"idx\": 1238450400000, \"val\": -3.8}, {\"col\": \"1 PIB total\", \"idx\": 1246312800000, \"val\": -4.2}, {\"col\": \"1 PIB total\", \"idx\": 1254261600000, \"val\": -5.0}, {\"col\": \"1 PIB total\", \"idx\": 1262214000000, \"val\": -3.3}, {\"col\": \"1 PIB total\", \"idx\": 1269986400000, \"val\": -0.9}, {\"col\": \"1 PIB total\", \"idx\": 1277848800000, \"val\": 0.0}, {\"col\": \"1 PIB total\", \"idx\": 1285797600000, \"val\": 1.1}, {\"col\": \"1 PIB total\", \"idx\": 1293750000000, \"val\": 1.5}, {\"col\": \"1 PIB total\", \"idx\": 1301522400000, \"val\": 0.9}, {\"col\": \"1 PIB total\", \"idx\": 1309384800000, \"val\": 0.5}, {\"col\": \"1 PIB total\", \"idx\": 1317333600000, \"val\": -0.7}, {\"col\": \"1 PIB total\", \"idx\": 1325286000000, \"val\": -1.4}, {\"col\": \"1 PIB total\", \"idx\": 1333144800000, \"val\": -1.6}, {\"col\": \"1 PIB total\", \"idx\": 1341007200000, \"val\": -2.2}, {\"col\": \"1 PIB total\", \"idx\": 1348956000000, \"val\": -1.2}, {\"col\": \"1 PIB total\", \"idx\": 1356908400000, \"val\": -1.7}, {\"col\": \"1 PIB total\", \"idx\": 1364684400000, \"val\": -1.8}, {\"col\": \"1 PIB total\", \"idx\": 1372543200000, \"val\": -1.5}, {\"col\": \"1 PIB total\", \"idx\": 1380492000000, \"val\": -1.5}, {\"col\": \"1 PIB total\", \"idx\": 1388444400000, \"val\": -0.2}, {\"col\": \"1 PIB total\", \"idx\": 1396216800000, \"val\": 0.1}, {\"col\": \"1 PIB total\", \"idx\": 1404079200000, \"val\": 1.0}, {\"col\": \"1 PIB total\", \"idx\": 1412028000000, \"val\": 1.3}]}], \"height\": 500, \"legends\": [{\"fill\": \"color\", \"offset\": 0, \"properties\": {}, \"title\": \"PIB total\"}], \"marks\": [{\"from\": {\"data\": \"table\", \"transform\": [{\"keys\": [\"data.col\"], \"type\": \"facet\"}]}, \"marks\": [{\"properties\": {\"enter\": {\"stroke\": {\"field\": \"data.col\", \"scale\": \"color\"}, \"strokeWidth\": {\"value\": 2}, \"x\": {\"field\": \"data.idx\", \"scale\": \"x\"}, \"y\": {\"field\": \"data.val\", \"scale\": \"y\"}}}, \"type\": \"line\"}], \"type\": \"group\"}], \"padding\": \"auto\", \"scales\": [{\"domain\": {\"data\": \"table\", \"field\": \"data.idx\"}, \"name\": \"x\", \"range\": \"width\", \"type\": \"time\"}, {\"domain\": {\"data\": \"table\", \"field\": \"data.val\"}, \"name\": \"y\", \"nice\": true, \"range\": \"height\"}, {\"domain\": {\"data\": \"table\", \"field\": \"data.col\"}, \"name\": \"color\", \"range\": \"category20\", \"type\": \"ordinal\"}], \"width\": 960}, function(chart) {\n",
" chart({el: \"#vis918384274eab407882feaf6f95a8eefd\"}).update();\n",
" });\n",
" };\n",
" _do_plot();\n",
" })();\n",
"</script>\n",
"<style>.vega canvas {width: 100%;}</style>\n",
" "
],
"text/plain": [
"<vincent.charts.Line at 0x39d0610>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Generación del gráfico de serie temporal\n",
"lineas = vincent.Line(tvarint)\n",
"lineas.scales[0].type = 'time'\n",
"lineas.axis_titles(x='Tiempo', y='Valor')\n",
"lineas.legend(title='PIB total')\n",
"display(lineas)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##Gráfico multilínea\n",
"\n",
"Finalmente, se generará un nuevo conjunto de datos seleccionando los sectores de Industria y energía, construcción y servicios. A partir de dicho conjunto, realizando operaciones similares a las detalladas anteriormente, es posible obtener una representación multilínea de la serie temporal categorizada según dichos sectores:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Sector</th>\n",
" <th>Tipo de ajuste</th>\n",
" <th>Variables</th>\n",
" <th>Valor</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Trimestre</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2001 - 1</th>\n",
" <td> 3 Industria y energía</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 2.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001 - 2</th>\n",
" <td> 3 Industria y energía</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001 - 3</th>\n",
" <td> 3 Industria y energía</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 8.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001 - 4</th>\n",
" <td> 3 Industria y energía</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 7.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002 - 1</th>\n",
" <td> 3 Industria y energía</td>\n",
" <td> Ajustada de estacionalidad y efecto calendario</td>\n",
" <td> Tasa de variación interanual</td>\n",
" <td> 6.9</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Sector \\\n",
"Trimestre \n",
"2001 - 1 3 Industria y energía \n",
"2001 - 2 3 Industria y energía \n",
"2001 - 3 3 Industria y energía \n",
"2001 - 4 3 Industria y energía \n",
"2002 - 1 3 Industria y energía \n",
"\n",
" Tipo de ajuste \\\n",
"Trimestre \n",
"2001 - 1 Ajustada de estacionalidad y efecto calendario \n",
"2001 - 2 Ajustada de estacionalidad y efecto calendario \n",
"2001 - 3 Ajustada de estacionalidad y efecto calendario \n",
"2001 - 4 Ajustada de estacionalidad y efecto calendario \n",
"2002 - 1 Ajustada de estacionalidad y efecto calendario \n",
"\n",
" Variables Valor \n",
"Trimestre \n",
"2001 - 1 Tasa de variación interanual 2.7 \n",
"2001 - 2 Tasa de variación interanual 8 \n",
"2001 - 3 Tasa de variación interanual 8.8 \n",
"2001 - 4 Tasa de variación interanual 7.6 \n",
"2002 - 1 Tasa de variación interanual 6.9 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import datetime as dt\n",
"import calendar\n",
"import time\n",
"\n",
"#Filtrado de datos para conseguir:\n",
"# Tasa de variación interanual\n",
"# Ajustada de estacionalidad y efecto calendario\n",
"# Sectores Industria, construcción y servicios\n",
"tvarint_multi = contrim_df[(contrim_df['Variables'] == \n",
" 'Tasa de variación interanual') & (contrim_df['Tipo de ajuste'] == \n",
" 'Ajustada de estacionalidad y efecto calendario')& ((contrim_df['Sector'] == \n",
" '3 Industria y energía') | (contrim_df['Sector'] == \n",
" '4 Construcción') | (contrim_df['Sector'] == \n",
" '5 Servicios'))]\n",
"\n",
"#Filtrado de filas con valor desconocido\n",
"tvarint_multi = tvarint_multi[tvarint_multi['Valor']!='..'] \n",
"tvarint_multi.head()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>Sector</th>\n",
" <th>1 PIB total</th>\n",
" </tr>\n",
" <tr>\n",
" <th>fechas</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2001-03-31</th>\n",
" <td> 5.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001-06-30</th>\n",
" <td> 8.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001-09-30</th>\n",
" <td> 9.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2001-12-31</th>\n",
" <td> 9.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2002-03-31</th>\n",
" <td> 8.8</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Sector 1 PIB total\n",
"fechas \n",
"2001-03-31 5.7\n",
"2001-06-30 8.7\n",
"2001-09-30 9.4\n",
"2001-12-31 9.3\n",
"2002-03-31 8.8"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Extracción del año y el trimestre y generación de fechas\n",
"anyo, trimestre = zip(*(s.split(\" - \") for s in list(tvarint_multi.index)))\n",
"fechas = [dt.datetime(int(y) , int(q)*3, int(calendar.monthrange(int(y), int(q)*3)[1])) for q,y in zip(trimestre,anyo)]\n",
"\n",
"#Adición de columna de fechas a la serie\n",
"tvarint_multi['fechas'] = fechas\n",
"\n",
"#Pivotaje para obtener una columna por categoría\n",
"tvarint_multi = tvarint_multi.pivot(index='fechas',columns='Sector', values='Valor')\n",
"tvarint.head()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div id=\"vise6b6d43020a643e9acd616b2097a50d7\"></div>\n",
"<script>\n",
" ( function() {\n",
" var _do_plot = function() {\n",
" if (typeof vg === 'undefined') {\n",
" window.addEventListener('vincent_libs_loaded', _do_plot)\n",
" return;\n",
" }\n",
" vg.parse.spec({\"axes\": [{\"scale\": \"x\", \"title\": \"Tiempo\", \"type\": \"x\"}, {\"scale\": \"y\", \"title\": \"Valor\", \"type\": \"y\"}], \"data\": [{\"name\": \"table\", \"values\": [{\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 985989600000, \"val\": 2.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 985989600000, \"val\": 7.6}, {\"col\": \"5 Servicios\", \"idx\": 985989600000, \"val\": 6.6}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 993852000000, \"val\": 8.0}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 993852000000, \"val\": 13.7}, {\"col\": \"5 Servicios\", \"idx\": 993852000000, \"val\": 10.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1001800800000, \"val\": 8.8}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1001800800000, \"val\": 17.2}, {\"col\": \"5 Servicios\", \"idx\": 1001800800000, \"val\": 9.4}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1009753200000, \"val\": 7.6}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1009753200000, \"val\": 19.3}, {\"col\": \"5 Servicios\", \"idx\": 1009753200000, \"val\": 8.5}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1017529200000, \"val\": 6.9}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1017529200000, \"val\": 18.0}, {\"col\": \"5 Servicios\", \"idx\": 1017529200000, \"val\": 8.1}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1025388000000, \"val\": 4.6}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1025388000000, \"val\": 16.7}, {\"col\": \"5 Servicios\", \"idx\": 1025388000000, \"val\": 6.5}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1033336800000, \"val\": 4.0}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1033336800000, \"val\": 16.3}, {\"col\": \"5 Servicios\", \"idx\": 1033336800000, \"val\": 5.8}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1041289200000, \"val\": 4.0}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1041289200000, \"val\": 17.1}, {\"col\": \"5 Servicios\", \"idx\": 1041289200000, \"val\": 7.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1049061600000, \"val\": 2.6}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1049061600000, \"val\": 13.1}, {\"col\": \"5 Servicios\", \"idx\": 1049061600000, \"val\": 5.8}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1056924000000, \"val\": 2.9}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1056924000000, \"val\": 10.8}, {\"col\": \"5 Servicios\", \"idx\": 1056924000000, \"val\": 6.7}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1064872800000, \"val\": 3.1}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1064872800000, \"val\": 9.6}, {\"col\": \"5 Servicios\", \"idx\": 1064872800000, \"val\": 6.9}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1072825200000, \"val\": 1.8}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1072825200000, \"val\": 4.1}, {\"col\": \"5 Servicios\", \"idx\": 1072825200000, \"val\": 6.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1080684000000, \"val\": 4.8}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1080684000000, \"val\": 6.4}, {\"col\": \"5 Servicios\", \"idx\": 1080684000000, \"val\": 7.2}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1088546400000, \"val\": 5.1}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1088546400000, \"val\": 7.1}, {\"col\": \"5 Servicios\", \"idx\": 1088546400000, \"val\": 6.6}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1096495200000, \"val\": 6.2}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1096495200000, \"val\": 8.8}, {\"col\": \"5 Servicios\", \"idx\": 1096495200000, \"val\": 6.6}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1104447600000, \"val\": 6.9}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1104447600000, \"val\": 13.9}, {\"col\": \"5 Servicios\", \"idx\": 1104447600000, \"val\": 7.5}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1112220000000, \"val\": 8.1}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1112220000000, \"val\": 13.1}, {\"col\": \"5 Servicios\", \"idx\": 1112220000000, \"val\": 6.9}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1120082400000, \"val\": 6.8}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1120082400000, \"val\": 13.5}, {\"col\": \"5 Servicios\", \"idx\": 1120082400000, \"val\": 7.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1128031200000, \"val\": 7.8}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1128031200000, \"val\": 15.7}, {\"col\": \"5 Servicios\", \"idx\": 1128031200000, \"val\": 8.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1135983600000, \"val\": 6.1}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1135983600000, \"val\": 11.9}, {\"col\": \"5 Servicios\", \"idx\": 1135983600000, \"val\": 6.8}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1143756000000, \"val\": 6.2}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1143756000000, \"val\": 12.3}, {\"col\": \"5 Servicios\", \"idx\": 1143756000000, \"val\": 7.3}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1151618400000, \"val\": 5.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1151618400000, \"val\": 12.4}, {\"col\": \"5 Servicios\", \"idx\": 1151618400000, \"val\": 7.6}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1159567200000, \"val\": 5.6}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1159567200000, \"val\": 10.6}, {\"col\": \"5 Servicios\", \"idx\": 1159567200000, \"val\": 7.7}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1167519600000, \"val\": 5.0}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1167519600000, \"val\": 6.2}, {\"col\": \"5 Servicios\", \"idx\": 1167519600000, \"val\": 8.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1175292000000, \"val\": 6.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1175292000000, \"val\": 4.5}, {\"col\": \"5 Servicios\", \"idx\": 1175292000000, \"val\": 9.4}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1183154400000, \"val\": 7.9}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1183154400000, \"val\": 5.2}, {\"col\": \"5 Servicios\", \"idx\": 1183154400000, \"val\": 9.8}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1191103200000, \"val\": 7.6}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1191103200000, \"val\": 4.9}, {\"col\": \"5 Servicios\", \"idx\": 1191103200000, \"val\": 8.8}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1199055600000, \"val\": 9.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1199055600000, \"val\": 6.4}, {\"col\": \"5 Servicios\", \"idx\": 1199055600000, \"val\": 9.1}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1206914400000, \"val\": 6.5}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1206914400000, \"val\": 9.8}, {\"col\": \"5 Servicios\", \"idx\": 1206914400000, \"val\": 9.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1214776800000, \"val\": 6.1}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1214776800000, \"val\": 7.4}, {\"col\": \"5 Servicios\", \"idx\": 1214776800000, \"val\": 8.3}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1222725600000, \"val\": 4.0}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1222725600000, \"val\": 7.2}, {\"col\": \"5 Servicios\", \"idx\": 1222725600000, \"val\": 7.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1230678000000, \"val\": -3.5}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1230678000000, \"val\": 0.3}, {\"col\": \"5 Servicios\", \"idx\": 1230678000000, \"val\": 4.1}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1238450400000, \"val\": -10.3}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1238450400000, \"val\": -7.0}, {\"col\": \"5 Servicios\", \"idx\": 1238450400000, \"val\": 1.3}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1246312800000, \"val\": -14.2}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1246312800000, \"val\": -6.6}, {\"col\": \"5 Servicios\", \"idx\": 1246312800000, \"val\": 1.9}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1254261600000, \"val\": -12.1}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1254261600000, \"val\": -8.0}, {\"col\": \"5 Servicios\", \"idx\": 1254261600000, \"val\": 1.3}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1262214000000, \"val\": -7.0}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1262214000000, \"val\": -8.1}, {\"col\": \"5 Servicios\", \"idx\": 1262214000000, \"val\": 0.7}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1269986400000, \"val\": 0.8}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1269986400000, \"val\": -12.1}, {\"col\": \"5 Servicios\", \"idx\": 1269986400000, \"val\": 0.2}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1277848800000, \"val\": 6.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1277848800000, \"val\": -16.5}, {\"col\": \"5 Servicios\", \"idx\": 1277848800000, \"val\": -1.4}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1285797600000, \"val\": 9.2}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1285797600000, \"val\": -18.4}, {\"col\": \"5 Servicios\", \"idx\": 1285797600000, \"val\": -1.8}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1293750000000, \"val\": 13.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1293750000000, \"val\": -15.2}, {\"col\": \"5 Servicios\", \"idx\": 1293750000000, \"val\": 0.2}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1301522400000, \"val\": 11.4}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1301522400000, \"val\": -12.2}, {\"col\": \"5 Servicios\", \"idx\": 1301522400000, \"val\": 0.5}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1309384800000, \"val\": 8.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1309384800000, \"val\": -12.7}, {\"col\": \"5 Servicios\", \"idx\": 1309384800000, \"val\": 0.9}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1317333600000, \"val\": 5.6}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1317333600000, \"val\": -13.2}, {\"col\": \"5 Servicios\", \"idx\": 1317333600000, \"val\": 0.7}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1325286000000, \"val\": 3.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1325286000000, \"val\": -13.9}, {\"col\": \"5 Servicios\", \"idx\": 1325286000000, \"val\": 1.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1333144800000, \"val\": 1.6}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1333144800000, \"val\": -14.2}, {\"col\": \"5 Servicios\", \"idx\": 1333144800000, \"val\": 0.4}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1341007200000, \"val\": 0.9}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1341007200000, \"val\": -13.3}, {\"col\": \"5 Servicios\", \"idx\": 1341007200000, \"val\": -0.1}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1348956000000, \"val\": 0.4}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1348956000000, \"val\": -13.2}, {\"col\": \"5 Servicios\", \"idx\": 1348956000000, \"val\": 0.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1356908400000, \"val\": -1.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1356908400000, \"val\": -12.0}, {\"col\": \"5 Servicios\", \"idx\": 1356908400000, \"val\": -1.3}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1364684400000, \"val\": -2.4}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1364684400000, \"val\": -9.5}, {\"col\": \"5 Servicios\", \"idx\": 1364684400000, \"val\": -0.9}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1372543200000, \"val\": -3.9}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1372543200000, \"val\": -8.8}, {\"col\": \"5 Servicios\", \"idx\": 1372543200000, \"val\": -1.4}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1380492000000, \"val\": -2.3}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1380492000000, \"val\": -6.3}, {\"col\": \"5 Servicios\", \"idx\": 1380492000000, \"val\": -1.2}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1388444400000, \"val\": -0.5}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1388444400000, \"val\": -5.5}, {\"col\": \"5 Servicios\", \"idx\": 1388444400000, \"val\": 0.0}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1396216800000, \"val\": 1.6}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1396216800000, \"val\": -7.2}, {\"col\": \"5 Servicios\", \"idx\": 1396216800000, \"val\": 0.1}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1404079200000, \"val\": 6.8}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1404079200000, \"val\": -7.0}, {\"col\": \"5 Servicios\", \"idx\": 1404079200000, \"val\": 0.8}, {\"col\": \"3 Industria y energ\\u00eda\", \"idx\": 1412028000000, \"val\": 7.7}, {\"col\": \"4 Construcci\\u00f3n\", \"idx\": 1412028000000, \"val\": -7.9}, {\"col\": \"5 Servicios\", \"idx\": 1412028000000, \"val\": 0.3}]}], \"height\": 500, \"legends\": [{\"fill\": \"color\", \"offset\": 0, \"properties\": {}, \"title\": \"Tasa de variaci\\u00f3n interanual\"}], \"marks\": [{\"from\": {\"data\": \"table\", \"transform\": [{\"keys\": [\"data.col\"], \"type\": \"facet\"}]}, \"marks\": [{\"properties\": {\"enter\": {\"stroke\": {\"field\": \"data.col\", \"scale\": \"color\"}, \"strokeWidth\": {\"value\": 2}, \"x\": {\"field\": \"data.idx\", \"scale\": \"x\"}, \"y\": {\"field\": \"data.val\", \"scale\": \"y\"}}}, \"type\": \"line\"}], \"type\": \"group\"}], \"padding\": \"auto\", \"scales\": [{\"domain\": {\"data\": \"table\", \"field\": \"data.idx\"}, \"name\": \"x\", \"range\": \"width\", \"type\": \"time\"}, {\"domain\": {\"data\": \"table\", \"field\": \"data.val\"}, \"name\": \"y\", \"nice\": true, \"range\": \"height\"}, {\"domain\": {\"data\": \"table\", \"field\": \"data.col\"}, \"name\": \"color\", \"range\": \"category20\", \"type\": \"ordinal\"}], \"width\": 960}, function(chart) {\n",
" chart({el: \"#vise6b6d43020a643e9acd616b2097a50d7\"}).update();\n",
" });\n",
" };\n",
" _do_plot();\n",
" })();\n",
"</script>\n",
"<style>.vega canvas {width: 100%;}</style>\n",
" "
],
"text/plain": [
"<vincent.charts.Line at 0x376be90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Generación de gráfico multi-línea\n",
"multi = vincent.Line(tvarint_multi)\n",
"multi.scales[0].type = 'time'\n",
"multi.axis_titles(x='Tiempo', y='Valor')\n",
"multi.legend(title='Tasa de variación interanual')\n",
"display(multi)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Con estos ejemplos se ha pretendido ofrecer un marco introductorio para la obtención, tratamiento y representación de datos estadísticos de Cantabria utilizando el lenguaje de programación Python conjuntamente con sus bibliotecas más comunes, así como una bilioteca propia para la extracción automática de datos desde la web del ICANE."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment