{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Turismo Extranjero en Ciudades de Espana\n", "\n", "Analisis de la Encuesta de Ocupacion Hotelera (INE) — tabla 2078.\n", "\n", "**Objetivo:** Identificar que ciudades de Espana tienen mayor afluencia de turismo extranjero y como ha evolucionado." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Vault: /home/lucas/fn_registry/vaults/turismo_spain\n", "Archivos: [PosixPath('/home/lucas/fn_registry/vaults/turismo_spain/raw/turismo-espana-2025'), PosixPath('/home/lucas/fn_registry/vaults/turismo_spain/raw/turismo-espana-2025.zip'), PosixPath('/home/lucas/fn_registry/vaults/turismo_spain/raw/ine_2074_viajeros_provincias.csv'), PosixPath('/home/lucas/fn_registry/vaults/turismo_spain/raw/ine_2078_viajeros_puntos_turisticos.csv'), PosixPath('/home/lucas/fn_registry/vaults/turismo_spain/raw/turismo-espana-2025.zip:Zone.Identifier')]\n" ] } ], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import plotly.express as px\n", "import plotly.graph_objects as go\n", "from pathlib import Path\n", "import os\n", "\n", "VAULT = Path(os.environ.get('FN_REGISTRY_ROOT', '../..')) / 'vaults' / 'turismo_spain'\n", "RAW = VAULT / 'raw'\n", "print(f'Vault: {VAULT}')\n", "print(f'Archivos: {list(RAW.glob(\"*\"))}')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Carga de datos INE — Tabla 2078 (Viajeros por puntos turisticos)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Shape: (140208, 5)\n", "Columnas: ['Puntos turísticos', 'Viajeros y pernoctaciones', 'Residencia', 'Periodo', 'Total']\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Puntos turísticosViajeros y pernoctacionesResidenciaPeriodoTotal
001059 Vitoria-GasteizViajeroResidentes en España2026M0218.573
101059 Vitoria-GasteizViajeroResidentes en España2026M0118.376
201059 Vitoria-GasteizViajeroResidentes en España2025M1223.737
301059 Vitoria-GasteizViajeroResidentes en España2025M1121.544
401059 Vitoria-GasteizViajeroResidentes en España2025M1024.269
\n", "
" ], "text/plain": [ " Puntos turísticos Viajeros y pernoctaciones Residencia \\\n", "0 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "1 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "2 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "3 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "4 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "\n", " Periodo Total \n", "0 2026M02 18.573 \n", "1 2026M01 18.376 \n", "2 2025M12 23.737 \n", "3 2025M11 21.544 \n", "4 2025M10 24.269 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(\n", " RAW / 'ine_2078_viajeros_puntos_turisticos.csv',\n", " sep=';',\n", " encoding='utf-8-sig'\n", ")\n", "print(f'Shape: {df.shape}')\n", "print(f'Columnas: {list(df.columns)}')\n", "df.head()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ciudades unicas: 138\n", "Rango temporal: 2005-01-01 00:00:00 — 2026-02-01 00:00:00\n", "Valores nulos en Total: 44788\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Puntos turísticosViajeros y pernoctacionesResidenciaPeriodoTotalcod_municipiociudadfechaaniomesvalor
001059 Vitoria-GasteizViajeroResidentes en España2026M0218.57301059Vitoria-Gasteiz2026-02-012026218573.0
101059 Vitoria-GasteizViajeroResidentes en España2026M0118.37601059Vitoria-Gasteiz2026-01-012026118376.0
201059 Vitoria-GasteizViajeroResidentes en España2025M1223.73701059Vitoria-Gasteiz2025-12-0120251223737.0
301059 Vitoria-GasteizViajeroResidentes en España2025M1121.54401059Vitoria-Gasteiz2025-11-0120251121544.0
401059 Vitoria-GasteizViajeroResidentes en España2025M1024.26901059Vitoria-Gasteiz2025-10-0120251024269.0
\n", "
" ], "text/plain": [ " Puntos turísticos Viajeros y pernoctaciones Residencia \\\n", "0 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "1 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "2 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "3 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "4 01059 Vitoria-Gasteiz Viajero Residentes en España \n", "\n", " Periodo Total cod_municipio ciudad fecha anio mes \\\n", "0 2026M02 18.573 01059 Vitoria-Gasteiz 2026-02-01 2026 2 \n", "1 2026M01 18.376 01059 Vitoria-Gasteiz 2026-01-01 2026 1 \n", "2 2025M12 23.737 01059 Vitoria-Gasteiz 2025-12-01 2025 12 \n", "3 2025M11 21.544 01059 Vitoria-Gasteiz 2025-11-01 2025 11 \n", "4 2025M10 24.269 01059 Vitoria-Gasteiz 2025-10-01 2025 10 \n", "\n", " valor \n", "0 18573.0 \n", "1 18376.0 \n", "2 23737.0 \n", "3 21544.0 \n", "4 24269.0 " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Limpiar datos\n", "# Separar codigo municipal y nombre de ciudad\n", "df[['cod_municipio', 'ciudad']] = df['Puntos turísticos'].str.extract(r'^(\\d+)\\s+(.*)')\n", "\n", "# Parsear periodo a fecha\n", "df['fecha'] = pd.to_datetime(df['Periodo'].str.replace('M', '-'), format='%Y-%m')\n", "df['anio'] = df['fecha'].dt.year\n", "df['mes'] = df['fecha'].dt.month\n", "\n", "# Limpiar columna Total (quitar puntos de miles, convertir a numerico)\n", "df['valor'] = pd.to_numeric(df['Total'].str.replace('.', '', regex=False), errors='coerce')\n", "\n", "print(f'Ciudades unicas: {df[\"ciudad\"].nunique()}')\n", "print(f'Rango temporal: {df[\"fecha\"].min()} — {df[\"fecha\"].max()}')\n", "print(f'Valores nulos en Total: {df[\"valor\"].isna().sum()}')\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Filtrar turismo extranjero — solo viajeros (no pernoctaciones)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Registros de viajeros extranjeros: 35052\n", "Ciudades: 138\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Puntos turísticosViajeros y pernoctacionesResidenciaPeriodoTotalcod_municipiociudadfechaaniomesvalor
25401059 Vitoria-GasteizViajeroResidentes en el Extranjero2026M025.05901059Vitoria-Gasteiz2026-02-01202625059.0
25501059 Vitoria-GasteizViajeroResidentes en el Extranjero2026M015.93101059Vitoria-Gasteiz2026-01-01202615931.0
25601059 Vitoria-GasteizViajeroResidentes en el Extranjero2025M126.26501059Vitoria-Gasteiz2025-12-012025126265.0
25701059 Vitoria-GasteizViajeroResidentes en el Extranjero2025M116.11401059Vitoria-Gasteiz2025-11-012025116114.0
25801059 Vitoria-GasteizViajeroResidentes en el Extranjero2025M1010.30801059Vitoria-Gasteiz2025-10-0120251010308.0
\n", "
" ], "text/plain": [ " Puntos turísticos Viajeros y pernoctaciones \\\n", "254 01059 Vitoria-Gasteiz Viajero \n", "255 01059 Vitoria-Gasteiz Viajero \n", "256 01059 Vitoria-Gasteiz Viajero \n", "257 01059 Vitoria-Gasteiz Viajero \n", "258 01059 Vitoria-Gasteiz Viajero \n", "\n", " Residencia Periodo Total cod_municipio \\\n", "254 Residentes en el Extranjero 2026M02 5.059 01059 \n", "255 Residentes en el Extranjero 2026M01 5.931 01059 \n", "256 Residentes en el Extranjero 2025M12 6.265 01059 \n", "257 Residentes en el Extranjero 2025M11 6.114 01059 \n", "258 Residentes en el Extranjero 2025M10 10.308 01059 \n", "\n", " ciudad fecha anio mes valor \n", "254 Vitoria-Gasteiz 2026-02-01 2026 2 5059.0 \n", "255 Vitoria-Gasteiz 2026-01-01 2026 1 5931.0 \n", "256 Vitoria-Gasteiz 2025-12-01 2025 12 6265.0 \n", "257 Vitoria-Gasteiz 2025-11-01 2025 11 6114.0 \n", "258 Vitoria-Gasteiz 2025-10-01 2025 10 10308.0 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Filtrar: solo viajeros extranjeros\n", "extranjeros = df[\n", " (df['Residencia'] == 'Residentes en el Extranjero') &\n", " (df['Viajeros y pernoctaciones'] == 'Viajero')\n", "].copy()\n", "\n", "print(f'Registros de viajeros extranjeros: {len(extranjeros)}')\n", "print(f'Ciudades: {extranjeros[\"ciudad\"].nunique()}')\n", "extranjeros.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Top 20 ciudades con mas turismo extranjero (ultimo anio completo)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Analizando anio: 2025\n", "\n", "Top 20 ciudades — Viajeros extranjeros 2025:\n", " 1. Barcelona 7,449,646\n", " 2. Madrid 6,107,041\n", " 3. Palma 2,324,397\n", " 4. Sevilla 1,958,368\n", " 5. Calvià 1,647,583\n", " 6. San Bartolomé de Tirajana 1,487,692\n", " 7. Adeje 1,436,865\n", " 8. Benidorm 1,423,238\n", " 9. València 1,195,690\n", " 10. Málaga 1,165,168\n", " 11. Granada 1,030,915\n", " 12. Lloret de Mar 890,699\n", " 13. Pájara 853,842\n", " 14. Arona 823,909\n", " 15. Torremolinos 782,406\n", " 16. Salou 750,134\n", " 17. Donostia/San Sebastián 643,984\n", " 18. Bilbao 637,721\n", " 19. Yaiza 617,982\n", " 20. Mogán 607,679\n" ] } ], "source": [ "# Ultimo anio completo\n", "ultimo_anio = extranjeros[extranjeros['anio'] == extranjeros['anio'].max() - 1]['anio'].iloc[0] if len(extranjeros) > 0 else 2025\n", "print(f'Analizando anio: {ultimo_anio}')\n", "\n", "# Agregar por ciudad, anio completo\n", "top_ciudades = (\n", " extranjeros[extranjeros['anio'] == ultimo_anio]\n", " .groupby('ciudad')['valor']\n", " .sum()\n", " .sort_values(ascending=False)\n", " .head(20)\n", ")\n", "\n", "print(f'\\nTop 20 ciudades — Viajeros extranjeros {ultimo_anio}:')\n", "for i, (ciudad, total) in enumerate(top_ciudades.items(), 1):\n", " print(f' {i:2d}. {ciudad:30s} {total:>12,.0f}')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Viajeros extranjeros=%{x}
Ciudad=%{y}
color=%{marker.color}", "legendgroup": "", "marker": { "color": { "bdata": "AAAAgAtrXEEAAABA6EtXQQAAAIDWu0FBAAAAAODhPUEAAAAA3yM5QQAAAABMszZBAAAAAMHsNUEAAAAAhrc1QQAAAACqPjJBAAAAAHDHMUEAAAAABnYvQQAAAACWLitBAAAAAKQOKkEAAAAAyiQpQQAAAACM4CdBAAAAAGzkJkEAAAAAIKcjQQAAAAAydiNBAAAAAPzbIkEAAAAAfosiQQ==", "dtype": "f8" }, "coloraxis": "coloraxis", "pattern": { "shape": "" } }, "name": "", "orientation": "h", "showlegend": false, "textposition": "auto", "type": "bar", "x": { "bdata": "AAAAgAtrXEEAAABA6EtXQQAAAIDWu0FBAAAAAODhPUEAAAAA3yM5QQAAAABMszZBAAAAAMHsNUEAAAAAhrc1QQAAAACqPjJBAAAAAHDHMUEAAAAABnYvQQAAAACWLitBAAAAAKQOKkEAAAAAyiQpQQAAAACM4CdBAAAAAGzkJkEAAAAAIKcjQQAAAAAydiNBAAAAAPzbIkEAAAAAfosiQQ==", "dtype": "f8" }, "xaxis": "x", "y": [ "Barcelona", "Madrid", "Palma", "Sevilla", "Calvià", "San Bartolomé de Tirajana", "Adeje", "Benidorm", "València", "Málaga", "Granada", "Lloret de Mar", "Pájara", "Arona", "Torremolinos", "Salou", "Donostia/San Sebastián", "Bilbao", "Yaiza", "Mogán" ], "yaxis": "y" } ], "layout": { "barmode": "relative", "coloraxis": { "colorbar": { "title": { "text": "color" } }, "colorscale": [ [ 0, "#440154" ], [ 0.1111111111111111, "#482878" ], [ 0.2222222222222222, "#3e4989" ], [ 0.3333333333333333, "#31688e" ], [ 0.4444444444444444, "#26828e" ], [ 0.5555555555555556, "#1f9e89" ], [ 0.6666666666666666, "#35b779" ], [ 0.7777777777777778, "#6ece58" ], [ 0.8888888888888888, "#b5de2b" ], [ 1, "#fde725" ] ], "showscale": false }, "height": 600, "legend": { "tracegroupgap": 0 }, "showlegend": false, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermap": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermap" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Top 20 ciudades de Espana por turismo extranjero (2025)" }, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": { "text": "Viajeros extranjeros" } }, "yaxis": { "anchor": "x", "categoryorder": "total ascending", "domain": [ 0, 1 ], "title": { "text": "Ciudad" } } } } }, "metadata": {}, "output_type": "display_data", "transient": {} } ], "source": [ "# Grafico de barras horizontal — Top 20\n", "fig = px.bar(\n", " x=top_ciudades.values,\n", " y=top_ciudades.index,\n", " orientation='h',\n", " title=f'Top 20 ciudades de Espana por turismo extranjero ({ultimo_anio})',\n", " labels={'x': 'Viajeros extranjeros', 'y': 'Ciudad'},\n", " color=top_ciudades.values,\n", " color_continuous_scale='Viridis'\n", ")\n", "fig.update_layout(\n", " yaxis={'categoryorder': 'total ascending'},\n", " height=600,\n", " showlegend=False,\n", " coloraxis_showscale=False\n", ")\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. Evolucion mensual — Top 10 ciudades" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "Ciudad=Madrid
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "Madrid", "line": { "color": "#636efa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "Madrid", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAAFyVE0EAAAAAWMATQQAAAAA05xlBAAAAAHRQHEEAAAAA/D8eQQAAAAB8Hx5BAAAAADDAHkEAAAAAhGwcQQAAAACcAyBBAAAAANTJH0EAAAAA6CQaQQAAAAAY9xZBAAAAAJDjFUEAAAAALP0WQQAAAABguRtBAAAAAI5BIEEAAAAAkEkhQQAAAAAcfR9BAAAAAD4eIEEAAAAAxJAdQQAAAAAyyyBBAAAAAOqIIUEAAAAAwDYcQQAAAADcdhhBAAAAABRtF0EAAAAAHCkXQQAAAAAUxRxBAAAAAHBBIEEAAAAAlpshQQAAAAAM3iBBAAAAAKC/IUEAAAAAmO4fQQAAAAAauiBBAAAAAIbsIkEAAAAAWDceQQAAAACs+hpBAAAAAJQyGUEAAAAAmNEZQQ==", "dtype": "f8" }, "yaxis": "y" }, { "hovertemplate": "Ciudad=Sevilla
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "Sevilla", "line": { "color": "#EF553B", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "Sevilla", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAAFCk90AAAAAAUB34QAAAAAAgOv9AAAAAACC4AkEAAAAAYMgCQQAAAACwyQBBAAAAAKgeAEEAAAAAqHkDQQAAAADgEQNBAAAAABjVBEEAAAAAEN39QAAAAADgX/xAAAAAACBW/EAAAAAAkN7/QAAAAAAAHgNBAAAAAFClBkEAAAAAKH4HQQAAAADQlAJBAAAAALhLAkEAAAAAQH4FQQAAAAAQMwVBAAAAALgeCEEAAAAAqMAAQQAAAAAwu/1AAAAAABBI/kAAAAAACFEAQQAAAACIdgRBAAAAAJglB0EAAAAAoNoHQQAAAACI/ANBAAAAAMCtAUEAAAAAwFUEQQAAAABIcgZBAAAAALiICEEAAAAA8KICQQAAAAA4hQBBAAAAANgpAEEAAAAA+E0BQQ==", "dtype": "f8" }, "yaxis": "y" }, { "hovertemplate": "Ciudad=Adeje
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "Adeje", "line": { "color": "#00cc96", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "Adeje", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAAEDM+kAAAAAAEAz8QAAAAADwDP1AAAAAABBZ/kAAAAAAAHf7QAAAAADARftAAAAAAAC3/EAAAAAAsET8QAAAAACQAPtAAAAAAFgJAEEAAAAAEI39QAAAAAAwb/1AAAAAAJAc/UAAAAAAADL9QAAAAAAIWgBBAAAAALAq/kAAAAAAcL78QAAAAACghPtAAAAAAKCf/UAAAAAAUEr+QAAAAABglPpAAAAAAGBs/0AAAAAA8Eb9QAAAAADgfvxAAAAAAEBu/UAAAAAA8Lz8QAAAAAAwAv5AAAAAAAD//kAAAAAAADP8QAAAAAAA5PpAAAAAAGBd/UAAAAAAIHP+QAAAAAAA2PlAAAAAAMCS/0AAAAAAwC/+QAAAAACwHf1AAAAAAPCi/kAAAAAAQH3+QA==", "dtype": "f8" }, "yaxis": "y" }, { "hovertemplate": "Ciudad=San Bartolomé de Tirajana
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "San Bartolomé de Tirajana", "line": { "color": "#ab63fa", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "San Bartolomé de Tirajana", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAAKAF/0AAAAAAkDn/QAAAAACwZv9AAAAAADD1/EAAAAAAoAb4QAAAAABAWvhAAAAAACAu/EAAAAAAQCb7QAAAAAAAUvlAAAAAAICMAEEAAAAAwFP+QAAAAAAgVf5AAAAAAABr/0AAAAAAaDgAQQAAAAAgsf9AAAAAAGDl+0AAAAAAgLn5QAAAAACQVfhAAAAAAJCW+UAAAAAAwOD6QAAAAACgFvlAAAAAAAgKAEEAAAAAUN3+QAAAAADQn/xAAAAAANC4/kAAAAAAsEP/QAAAAAAAOwBBAAAAAIAY/0AAAAAAoC35QAAAAABANvpAAAAAANDI/UAAAAAAkLz+QAAAAADAT/tAAAAAALjfAUEAAAAA0A4AQQAAAACwk/5AAAAAANA8AEEAAAAAIFgAQQ==", "dtype": "f8" }, "yaxis": "y" }, { "hovertemplate": "Ciudad=Málaga
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "Málaga", "line": { "color": "#FFA15A", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "Málaga", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAAMCB6kAAAAAAILjpQAAAAAAQC/FAAAAAACBs9EAAAAAAEBj2QAAAAABQJ/JAAAAAADAP9EAAAAAA8Af0QAAAAACQXvVAAAAAAPBl9kAAAAAAICPxQAAAAAAgmexAAAAAAPAf8EAAAAAAkEDwQAAAAACAS/FAAAAAABCC9kAAAAAAwE33QAAAAACAp/RAAAAAACBB9kAAAAAA0KP2QAAAAADg0vZAAAAAAFDp90AAAAAAEC3yQAAAAAAQDPFAAAAAAACC7kAAAAAAYBjwQAAAAABg8vRAAAAAAJDx+0AAAAAA8Db7QAAAAAAw+flAAAAAAGAV/EAAAAAA8FX8QAAAAACA2PpAAAAAALDT+0AAAAAAUED1QAAAAADAsfJAAAAAAMD38EAAAAAAELDzQA==", "dtype": "f8" }, "yaxis": "y" }, { "hovertemplate": "Ciudad=Barcelona
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "Barcelona", "line": { "color": "#19d3f3", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "Barcelona", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAANxCF0EAAAAAIJMZQQAAAADsER9BAAAAAFINIkEAAAAApEwjQQAAAAC4PiNBAAAAAP75I0EAAAAAjH0kQQAAAADeASNBAAAAAEgYI0EAAAAAgKseQQAAAACAGxpBAAAAAJCXGUEAAAAA8EAcQQAAAAB2QSFBAAAAACqSIkEAAAAA3LkkQQAAAACSbiNBAAAAADKWJEEAAAAAEFElQQAAAAAmWiJBAAAAAFqEI0EAAAAAGFIfQQAAAAC8OxtBAAAAAETWGkEAAAAAXHIdQQAAAAB4hCFBAAAAABBuJEEAAAAA6s0lQQAAAACOHSVBAAAAADosJUEAAAAANHQmQQAAAACceCRBAAAAADBaJUEAAAAAqi8hQQAAAABQZh9BAAAAANQ3HkEAAAAAcPUeQQ==", "dtype": "f8" }, "yaxis": "y" }, { "hovertemplate": "Ciudad=Palma
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "Palma", "line": { "color": "#FF6692", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "Palma", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAAIC83UAAAAAAAMjjQAAAAABAGfRAAAAAAFgeCUEAAAAAVFIQQQAAAADgkBJBAAAAAFwnE0EAAAAAsPcSQQAAAADI1BBBAAAAAPDBCkEAAAAA4DXnQAAAAADA4eNAAAAAAAAy20AAAAAAQJrqQAAAAAAQwvlAAAAAAMCeCUEAAAAA4AsSQQAAAAAURhJBAAAAAATmE0EAAAAAxDATQQAAAAAYJhBBAAAAAECWDkEAAAAAgAfrQAAAAACA3eZAAAAAAAB/4kAAAAAAoF7xQAAAAADARftAAAAAAOBeCUEAAAAArDsSQQAAAAD4/BJBAAAAADTRE0EAAAAArIUTQQAAAAAMZxFBAAAAAJB7DkEAAAAAQL7sQAAAAABgUedAAAAAAIAc30AAAAAA4MbrQA==", "dtype": "f8" }, "yaxis": "y" }, { "hovertemplate": "Ciudad=Calvià
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "Calvià", "line": { "color": "#B6E880", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "Calvià", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAAAAA+H8AAAAAAJDLQAAAAAAgG+BAAAAAAPDu/0AAAAAAWFoIQQAAAACoGA1BAAAAAPA2EEEAAAAAGAwQQQAAAABIWAxBAAAAAOhlBEEAAAAAAO+2QAAAAAAAAPh/AAAAAAAA+H8AAAAAgMjIQAAAAACgvOlAAAAAAFgsAEEAAAAAyB0NQQAAAABUExBBAAAAAOhuEUEAAAAAUBYRQQAAAAAokg1BAAAAAAgnDEEAAAAAAL6zQAAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAKd5AAAAAAJiMAUEAAAAAcDkNQQAAAABwWQ1BAAAAAIgSEEEAAAAAdLUQQQAAAABcIhBBAAAAAKiMBkEAAAAAACG7QAAAAAAAAPh/AAAAAAAA+H8AAAAAAFLLQA==", "dtype": "f8" }, "yaxis": "y" }, { "hovertemplate": "Ciudad=Benidorm
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "Benidorm", "line": { "color": "#FF97FF", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "Benidorm", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAAMD34UAAAAAAID3mQAAAAACAXPNAAAAAAFDO+kAAAAAAcO7+QAAAAAAQDf5AAAAAAKAe/0AAAAAASBUAQQAAAABwOf1AAAAAAPDD+0AAAAAAgObzQAAAAADAwetAAAAAAKBh50AAAAAAwKrtQAAAAADQuPdAAAAAABA2/UAAAAAA6AIBQQAAAABYWABBAAAAANibAEEAAAAA2CUCQQAAAACwG/9AAAAAAFCS/EAAAAAAgN32QAAAAADASuxAAAAAAKBx6UAAAAAA0MrwQAAAAAAg1vxAAAAAAMAP/kAAAAAAAL8CQQAAAACQPwJBAAAAAGiKA0EAAAAAsMQDQQAAAABQEgFBAAAAACiuAEEAAAAAMCP4QAAAAADgnu1AAAAAAEBB6UAAAAAAEMfxQA==", "dtype": "f8" }, "yaxis": "y" }, { "hovertemplate": "Ciudad=València
Mes=%{x}
Viajeros extranjeros=%{y}", "legendgroup": "València", "line": { "color": "#FECB52", "dash": "solid" }, "marker": { "symbol": "circle" }, "mode": "lines", "name": "València", "orientation": "v", "showlegend": true, "type": "scatter", "x": [ "2023-01-01T00:00:00.000000", "2023-02-01T00:00:00.000000", "2023-03-01T00:00:00.000000", "2023-04-01T00:00:00.000000", "2023-05-01T00:00:00.000000", "2023-06-01T00:00:00.000000", "2023-07-01T00:00:00.000000", "2023-08-01T00:00:00.000000", "2023-09-01T00:00:00.000000", "2023-10-01T00:00:00.000000", "2023-11-01T00:00:00.000000", "2023-12-01T00:00:00.000000", "2024-01-01T00:00:00.000000", "2024-02-01T00:00:00.000000", "2024-03-01T00:00:00.000000", "2024-04-01T00:00:00.000000", "2024-05-01T00:00:00.000000", "2024-06-01T00:00:00.000000", "2024-07-01T00:00:00.000000", "2024-08-01T00:00:00.000000", "2024-09-01T00:00:00.000000", "2024-10-01T00:00:00.000000", "2024-11-01T00:00:00.000000", "2024-12-01T00:00:00.000000", "2025-01-01T00:00:00.000000", "2025-02-01T00:00:00.000000", "2025-03-01T00:00:00.000000", "2025-04-01T00:00:00.000000", "2025-05-01T00:00:00.000000", "2025-06-01T00:00:00.000000", "2025-07-01T00:00:00.000000", "2025-08-01T00:00:00.000000", "2025-09-01T00:00:00.000000", "2025-10-01T00:00:00.000000", "2025-11-01T00:00:00.000000", "2025-12-01T00:00:00.000000", "2026-01-01T00:00:00.000000", "2026-02-01T00:00:00.000000" ], "xaxis": "x", "y": { "bdata": "AAAAAMBr7UAAAAAAoK/tQAAAAAAwe/NAAAAAALCv90AAAAAAUAf6QAAAAACgqPhAAAAAAOA0+UAAAAAAQOb8QAAAAABQTPpAAAAAAED7+UAAAAAA4AH0QAAAAADAMfFAAAAAANDP8UAAAAAAcLjzQAAAAACQNPdAAAAAACCB+kAAAAAAwFf7QAAAAAAAYvpAAAAAACDR+0AAAAAAkMH+QAAAAACAVftAAAAAAJBZ/EAAAAAAoIHtQAAAAACA9uxAAAAAALBF8EAAAAAAIOzyQAAAAADQ6/VAAAAAAHBD+kAAAAAAEFn6QAAAAABg9PpAAAAAAFA//EAAAAAAgAP/QAAAAACQIvxAAAAAACBQ/EAAAAAA4A70QAAAAADAd/NAAAAAAMDi8EAAAAAA4JXyQA==", "dtype": "f8" }, "yaxis": "y" } ], "layout": { "height": 500, "legend": { "title": { "text": "Ciudad" }, "tracegroupgap": 0 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermap": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermap" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Evolucion mensual de turismo extranjero — Top 10 ciudades (2023-2025)" }, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": { "text": "Mes" } }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "Viajeros extranjeros" } } } } }, "metadata": {}, "output_type": "display_data", "transient": {} } ], "source": [ "# Top 10 ciudades por volumen total reciente\n", "top10_nombres = top_ciudades.head(10).index.tolist()\n", "\n", "# Filtrar datos recientes (ultimos 3 anios)\n", "reciente = extranjeros[\n", " (extranjeros['ciudad'].isin(top10_nombres)) &\n", " (extranjeros['anio'] >= ultimo_anio - 2)\n", "].copy()\n", "\n", "fig = px.line(\n", " reciente.sort_values('fecha'),\n", " x='fecha',\n", " y='valor',\n", " color='ciudad',\n", " title=f'Evolucion mensual de turismo extranjero — Top 10 ciudades ({ultimo_anio-2}-{ultimo_anio})',\n", " labels={'valor': 'Viajeros extranjeros', 'fecha': 'Mes', 'ciudad': 'Ciudad'},\n", ")\n", "fig.update_layout(height=500)\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. Ratio extranjeros vs nacionales por ciudad" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ciudades con mayor % de turismo extranjero (2025):\n", " 1. Viveiro 94.7% ( 30,737 ext / 32,449 total)\n", " 2. Vall de Boí, La 94.1% ( 45,275 ext / 48,133 total)\n", " 3. Cazorla 92.6% ( 37,728 ext / 40,744 total)\n", " 4. Sallent de Gállego 91.1% ( 76,995 ext / 84,552 total)\n", " 5. Carboneras 90.9% ( 25,962 ext / 28,556 total)\n", " 6. Soria 90.8% ( 125,315 ext / 138,061 total)\n", " 7. Sigüenza 90.1% ( 33,895 ext / 37,602 total)\n", " 8. Benasque 88.5% ( 70,763 ext / 79,960 total)\n", " 9. Plasencia 88.2% ( 76,453 ext / 86,652 total)\n", " 10. Palencia 88.0% ( 90,303 ext / 102,610 total)\n", " 11. Albarracín 87.6% ( 44,121 ext / 50,377 total)\n", " 12. Benavente 87.5% ( 23,035 ext / 26,335 total)\n", " 13. Cuenca 86.3% ( 155,294 ext / 179,884 total)\n", " 14. Jaca 86.1% ( 150,658 ext / 175,036 total)\n", " 15. Ciudad Real 85.9% ( 144,047 ext / 167,656 total)\n", " 16. Zamora 85.6% ( 99,415 ext / 116,159 total)\n", " 17. Albacete 85.4% ( 190,983 ext / 223,756 total)\n", " 18. Grove, O 85.4% ( 91,753 ext / 107,471 total)\n", " 19. Úbeda 85.3% ( 69,094 ext / 81,030 total)\n", " 20. Puerto de Santa María, El 85.2% ( 174,458 ext / 204,761 total)\n" ] } ], "source": [ "# Comparar viajeros nacionales vs extranjeros por ciudad\n", "viajeros = df[\n", " (df['Viajeros y pernoctaciones'] == 'Viajero') &\n", " (df['anio'] == ultimo_anio)\n", "].copy()\n", "\n", "pivot = viajeros.pivot_table(\n", " index='ciudad',\n", " columns='Residencia',\n", " values='valor',\n", " aggfunc='sum'\n", ").fillna(0)\n", "\n", "pivot.columns = ['extranjeros', 'nacionales']\n", "pivot['total'] = pivot['extranjeros'] + pivot['nacionales']\n", "pivot['pct_extranjeros'] = (pivot['extranjeros'] / pivot['total'] * 100).round(1)\n", "pivot = pivot.sort_values('pct_extranjeros', ascending=False)\n", "\n", "print(f'Ciudades con mayor % de turismo extranjero ({ultimo_anio}):')\n", "for i, (ciudad, row) in enumerate(pivot.head(20).iterrows(), 1):\n", " print(f' {i:2d}. {ciudad:30s} {row[\"pct_extranjeros\"]:5.1f}% ({row[\"extranjeros\"]:>10,.0f} ext / {row[\"total\"]:>10,.0f} total)')" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "%{hovertext}

Viajeros totales=%{x}
% Extranjeros=%{y}
Viajeros extranjeros=%{marker.size}
ciudad=%{text}", "hovertext": [ "Sallent de Gállego", "Soria", "Benasque", "Plasencia", "Palencia", "Albarracín", "Cuenca", "Jaca", "Ciudad Real", "Zamora", "Albacete", "Grove, O", "Úbeda", "Puerto de Santa María, El", "Peníscola/Peñíscola", "Ourense", "Teruel", "Trujillo", "Gandia", "Guadalajara", "Gijón", "Níjar", "Sanxenxo", "Mojácar", "Roquetas de Mar", "Ávila", "Lugo", "Vielha e Mijaran", "Ponferrada", "Logroño", "Llanes", "León", "Cangas de Onís", "Valladolid", "Cáceres", "Cartagena", "Coruña, A", "Oviedo", "Murcia", "Mérida", "Dénia", "Conil de la Frontera", "Almería", "Ribadeo", "Almuñécar", "Segovia", "Badajoz", "Zaragoza", "Toledo", "Naut Aran", "Vitoria-Gasteiz", "Lleida", "Jerez de la Frontera", "Monachil", "Pamplona/Iruña", "Alcalá de Henares", "Castelló de la Plana/Castellón de la Plana", "Santander", "Chiclana de la Frontera", "Santa Cruz de Tenerife", "Vigo", "Burgos", "Antequera", "Cádiz", "Salamanca", "Tarifa", "Palmas de Gran Canaria, Las", "Elx/Elche", "Altea", "Córdoba", "Tarragona", "Cambrils", "Santiago de Compostela", "Bilbao", "Algeciras", "Pontevedra", "Granada", "València", "Salou", "Puerto de la Cruz", "Benidorm", "Madrid", "Alacant/Alicante", "Girona", "Castelldefels", "Donostia/San Sebastián", "Sevilla", "Sitges", "Málaga", "Nerja", "Estepona", "Formentera", "Fuengirola", "Ronda", "Torremolinos", "Benalmádena", "Hospitalet de Llobregat, L'", "Marbella", "Lloret de Mar", "Ciutadella de Menorca", "Eivissa", "San Bartolomé de Tirajana", "Barcelona", "Teguise", "Yaiza", "Sant Antoni de Portmany", "Antigua", "Oliva, La", "Mogán", "Pájara", "Sant Josep de sa Talaia", "Pollença", "Palma", "Arona", "Santanyí", "Tías", "Capdepera", "Alcúdia", "Adeje", "Calvià", "Muro", "Sant Llorenç des Cardassar", "Sóller" ], "legendgroup": "", "marker": { "color": "#636efa", "size": { "bdata": "AAAAADDM8kAAAAAAMJj+QAAAAACwRvFAAAAAAFCq8kAAAAAA8Av2QAAAAAAgi+VAAAAAAPD0AkEAAAAAEGQCQQAAAAB4lQFBAAAAAHBF+EAAAAAAOFAHQQAAAACQZvZAAAAAAGDe8EAAAAAA0EsFQQAAAAC8dxRBAAAAAPC+/UAAAAAAUJ4AQQAAAABgVvBAAAAAAMDuDUEAAAAAILT8QAAAAAD41xRBAAAAAICf8EAAAAAACBMLQQAAAAAotQRBAAAAAFQVHUEAAAAAQE8OQQAAAABI0wBBAAAAAEBUA0EAAAAAsNH5QAAAAACYyhFBAAAAADBW90AAAAAAYLgTQQAAAACQIfhAAAAAAORTE0EAAAAAaAoKQQAAAACYUg1BAAAAAFDHGUEAAAAAdN8WQQAAAAAsXhtBAAAAAGi6CUEAAAAAwEX2QAAAAADIdwNBAAAAAJjwD0EAAAAAwEbjQAAAAADYegJBAAAAAMh/DEEAAAAA4OgDQQAAAACqkSpBAAAAACRoG0EAAAAAEEfyQAAAAABIEBFBAAAAAJgiBEEAAAAAYN4JQQAAAAAwNfVAAAAAADyJEEEAAAAAGAYGQQAAAADg+gRBAAAAAORjFEEAAAAAWC8RQQAAAAAo7wdBAAAAALA3FEEAAAAAEGwUQQAAAAAQbfFAAAAAAKhzCUEAAAAAVEQbQQAAAABARvhAAAAAACD1EEEAAAAA+EgCQQAAAAAwEvBAAAAAAOhiIEEAAAAASP0AQQAAAADQp/xAAAAAABiBG0EAAAAAfDchQQAAAACQXvpAAAAAAFCO8EAAAAAAGrcpQQAAAACMdCxBAAAAADxMIUEAAAAA4FMTQQAAAAAYCC9BAAAAgDdhUEEAAAAAMFQWQQAAAAAw3v1AAAAAAPDR9UAAAAAA5McYQQAAAAC32DFBAAAAAAAr+UAAAAAAugUkQQAAAAAQmvNAAAAAACAI/EAAAAAAgJLnQAAAAACozAdBAAAAAHAF9UAAAAAA0DwTQQAAAAAY0QdBAAAAAFCi/kAAAAAAoJ0GQQAAAABIERFBAAAAADCW8kAAAAAAcDj3QAAAAABYdBRBAAAAAGB3N0EAAAAAoE/uQAAAAADAtftAAAAAAAAC7EAAAAAAgHvnQAAAAADAVOxAAAAAAKBz9kAAAAAAMGn+QAAAAACgV/FAAAAAAMBi1kAAAAAAuLoSQQAAAADw4fhAAAAAAMDd5EAAAAAA4H7nQAAAAABAbeRAAAAAAIBX7UAAAAAAYLT/QAAAAAB4ZAFBAAAAAIBc20AAAAAAAEvfQAAAAAAACbRA", "dtype": "f8" }, "sizemode": "area", "sizeref": 10734.635, "symbol": "circle" }, "mode": "markers+text", "name": "", "orientation": "v", "showlegend": false, "text": [ "Sallent de Gállego", "Soria", "Benasque", "Plasencia", "Palencia", "Albarracín", "Cuenca", "Jaca", "Ciudad Real", "Zamora", "Albacete", "Grove, O", "Úbeda", "Puerto de Santa María, El", "Peníscola/Peñíscola", "Ourense", "Teruel", "Trujillo", "Gandia", "Guadalajara", "Gijón", "Níjar", "Sanxenxo", "Mojácar", "Roquetas de Mar", "Ávila", "Lugo", "Vielha e Mijaran", "Ponferrada", "Logroño", "Llanes", "León", "Cangas de Onís", "Valladolid", "Cáceres", "Cartagena", "Coruña, A", "Oviedo", "Murcia", "Mérida", "Dénia", "Conil de la Frontera", "Almería", "Ribadeo", "Almuñécar", "Segovia", "Badajoz", "Zaragoza", "Toledo", "Naut Aran", "Vitoria-Gasteiz", "Lleida", "Jerez de la Frontera", "Monachil", "Pamplona/Iruña", "Alcalá de Henares", "Castelló de la Plana/Castellón de la Plana", "Santander", "Chiclana de la Frontera", "Santa Cruz de Tenerife", "Vigo", "Burgos", "Antequera", "Cádiz", "Salamanca", "Tarifa", "Palmas de Gran Canaria, Las", "Elx/Elche", "Altea", "Córdoba", "Tarragona", "Cambrils", "Santiago de Compostela", "Bilbao", "Algeciras", "Pontevedra", "Granada", "València", "Salou", "Puerto de la Cruz", "Benidorm", "Madrid", "Alacant/Alicante", "Girona", "Castelldefels", "Donostia/San Sebastián", "Sevilla", "Sitges", "Málaga", "Nerja", "Estepona", "Formentera", "Fuengirola", "Ronda", "Torremolinos", "Benalmádena", "Hospitalet de Llobregat, L'", "Marbella", "Lloret de Mar", "Ciutadella de Menorca", "Eivissa", "San Bartolomé de Tirajana", "Barcelona", "Teguise", "Yaiza", "Sant Antoni de Portmany", "Antigua", "Oliva, La", "Mogán", "Pájara", "Sant Josep de sa Talaia", "Pollença", "Palma", "Arona", "Santanyí", "Tías", "Capdepera", "Alcúdia", "Adeje", "Calvià", "Muro", "Sant Llorenç des Cardassar", "Sóller" ], "textfont": { "size": 9 }, "textposition": "top center", "type": "scatter", "x": { "bdata": "AAAAAICk9EAAAAAAaNoAQQAAAACAhfNAAAAAAMAn9UAAAAAAIA35QAAAAAAgmehAAAAAAGD1BUEAAAAA4F0FQQAAAABAdwRBAAAAAPBb/EAAAAAAYFALQQAAAADwPPpAAAAAAGDI80AAAAAAyP4IQQAAAACoCBhBAAAAAJCDAUEAAAAASLMDQQAAAACgafNAAAAAALjzEUEAAAAAGE4BQQAAAACwVRlBAAAAAJBM9EAAAAAA9KUQQQAAAABwjglBAAAAAE77IUEAAAAA/LwSQQAAAADQNgVBAAAAADB0CEEAAAAAqF0AQQAAAACojBZBAAAAAFC1/UAAAAAAZCkZQQAAAAAwD/9AAAAAAEzhGEEAAAAAGNIQQQAAAACc+BJBAAAAAKCzIEEAAAAAuKkdQQAAAAB+xCFBAAAAAODyEEEAAAAA4Az+QAAAAAD4SApBAAAAAOzPFUEAAAAAQGvqQAAAAABoTglBAAAAAAiTE0EAAAAAeIcLQQAAAACJezJBAAAAAHgXI0EAAAAAAHb5QAAAAADM9xdBAAAAADBXDEEAAAAA8FASQQAAAADwMv9AAAAAAKxqGEEAAAAAiEUQQQAAAAAIPw9BAAAAAFTsHkEAAAAAzBsaQQAAAADElhJBAAAAALQaIEEAAAAA1FMgQQAAAADQ8/tAAAAAAHzRFEEAAAAA5mwmQQAAAACYsgRBAAAAAHiFHUEAAAAA8BgQQQAAAADQ4P1AAAAAAEiMLkEAAAAA0K0PQQAAAABINQxBAAAAAMoKLEEAAAAA11YyQQAAAAA4tAxBAAAAABgaAkEAAAAAkJY8QQAAAAB4PEBBAAAAAFQYNEEAAAAAvgwnQQAAAADJnUJBAAAA4I/WY0EAAAAACrsrQQAAAACUohJBAAAAACBBC0EAAAAAiQUwQQAAAIBL3UdBAAAAAGwGEUEAAAAATco7QQAAAABAhgtBAAAAABzCE0EAAAAAiDkBQQAAAACwcCFBAAAAAARaEEEAAAAAer8wQQAAAACO0SVBAAAAACzEHEEAAAAA9LclQQAAAACd2zFBAAAAAGSVFkEAAAAAgE4cQQAAAABi0DtBAAAAwHEkYUEAAAAAPK8WQQAAAAC0UiZBAAAAAAimF0EAAAAAANYUQQAAAAA8aBpBAAAAAPJZJUEAAAAAytstQQAAAAB4ESFBAAAAAHCzBkEAAACALRNEQQAAAAAIQSxBAAAAAAReGUEAAAAAbIAdQQAAAABcRRpBAAAAAPAUI0EAAAAAB+g3QQAAAABuUDtBAAAAACjRG0EAAAAATqMiQQAAAAAQFv1A", "dtype": "f8" }, "xaxis": "x", "y": { "bdata": "ZmZmZmbGVkAzMzMzM7NWQAAAAAAAIFZAzczMzMwMVkAAAAAAAABWQGZmZmZm5lVAMzMzMzOTVUBmZmZmZoZVQJqZmZmZeVVAZmZmZmZmVUCamZmZmVlVQJqZmZmZWVVAMzMzMzNTVUDNzMzMzExVQM3MzMzMTFVAmpmZmZk5VUCamZmZmRlVQM3MzMzMDFVAmpmZmZnZVECamZmZmblUQDMzMzMzk1RAmpmZmZl5VEAzMzMzM1NUQAAAAAAAQFRAmpmZmZk5VECamZmZmTlUQDMzMzMz01NAAAAAAADAU0CamZmZmblTQJqZmZmZuVNAZmZmZmamU0CamZmZmZlTQM3MzMzMbFNAzczMzMxsU0CamZmZmVlTQDMzMzMzU1NAzczMzMxMU0BmZmZmZkZTQAAAAAAAQFNAmpmZmZn5UkBmZmZmZoZSQGZmZmZmhlJAzczMzMxMUkAAAAAAAEBSQAAAAAAAQFJAMzMzMzMzUkAzMzMzMxNSQJqZmZmZ+VFAMzMzMzPzUUAzMzMzM/NRQM3MzMzMzFFAAAAAAADAUUBmZmZmZqZRQAAAAAAAAFFAzczMzMzsUEDNzMzMzOxQQGZmZmZmxlBAmpmZmZl5UEAzMzMzM3NQQJqZmZmZGVBAZmZmZmZmT0AAAAAAAEBPQGZmZmZmJk9AzczMzMyMTkBmZmZmZmZOQM3MzMzMTE1AMzMzMzOzTEBmZmZmZmZMQGZmZmZm5kpAzczMzMzMSkDNzMzMzMxKQGZmZmZmZklAAAAAAACASEAzMzMzM3NHQDMzMzMz80ZAmpmZmZnZRkAAAAAAAIBGQGZmZmZm5kVAAAAAAACARUAzMzMzM/NEQJqZmZmZ2URAZmZmZmamREBmZmZmZiZEQM3MzMzMDERAAAAAAAAARECamZmZmVlDQDMzMzMzs0JAAAAAAACAQkAAAAAAAABCQM3MzMzMzEFAAAAAAADAQUCamZmZmRlBQM3MzMzMDEFAzczMzMwMQEAzMzMzM7M8QM3MzMzMTDtAmpmZmZmZOkAAAAAAAAA6QGZmZmZm5jdAmpmZmZmZNEAAAAAAAIA0QGZmZmZmZjJAmpmZmZkZMUAzMzMzM7MwQAAAAAAAAC9AmpmZmZmZLUAzMzMzMzMsQM3MzMzMzCpAMzMzMzMzKkBmZmZmZmYpQGZmZmZmZilAmpmZmZmZKEBmZmZmZmYnQAAAAAAAACZAmpmZmZmZJEAAAAAAAAAkQGZmZmZmZiNAMzMzMzMzI0CamZmZmZkgQAAAAAAAACBAZmZmZmZmGEDNzMzMzMwUQDMzMzMzMxFA", "dtype": "f8" }, "yaxis": "y" } ], "layout": { "height": 600, "legend": { "itemsizing": "constant", "tracegroupgap": 0 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermap": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermap" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Volumen total vs % turismo extranjero por ciudad (2025)" }, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": { "text": "Viajeros totales" } }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "% Extranjeros" } } } } }, "metadata": {}, "output_type": "display_data", "transient": {} } ], "source": [ "# Scatter: volumen total vs % extranjeros\n", "pivot_top = pivot[pivot['total'] > 50000].copy() # filtrar ciudades con volumen minimo\n", "\n", "fig = px.scatter(\n", " pivot_top.reset_index(),\n", " x='total',\n", " y='pct_extranjeros',\n", " text='ciudad',\n", " size='extranjeros',\n", " title=f'Volumen total vs % turismo extranjero por ciudad ({ultimo_anio})',\n", " labels={\n", " 'total': 'Viajeros totales',\n", " 'pct_extranjeros': '% Extranjeros',\n", " 'extranjeros': 'Viajeros extranjeros'\n", " },\n", " hover_name='ciudad',\n", ")\n", "fig.update_traces(textposition='top center', textfont_size=9)\n", "fig.update_layout(height=600)\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. Crecimiento interanual — quien crece mas rapido" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Top 15 ciudades con mayor crecimiento de turismo extranjero (2024 -> 2025):\n", " 1. Algeciras + 34.6% ( 94,487 -> 127,134)\n", " 2. Badajoz + 30.1% ( 47,990 -> 62,419)\n", " 3. Ciudad Rodrigo + 29.8% ( 12,616 -> 16,377)\n", " 4. Monachil + 27.7% ( 32,057 -> 40,924)\n", " 5. Trujillo + 25.3% ( 10,051 -> 12,596)\n", " 6. Mérida + 24.7% ( 53,678 -> 66,923)\n", " 7. Murcia + 24.0% ( 107,906 -> 133,812)\n", " 8. Guadalajara + 23.9% ( 19,523 -> 24,193)\n", " 9. Altea + 23.7% ( 45,731 -> 56,554)\n", " 10. Albacete + 20.2% ( 27,258 -> 32,773)\n", " 11. Pontevedra + 19.2% ( 67,532 -> 80,478)\n", " 12. Coruña, A + 18.5% ( 105,402 -> 124,924)\n", " 13. Cangas de Onís + 18.1% ( 24,027 -> 28,378)\n", " 14. Ciudad Real + 17.7% ( 20,052 -> 23,609)\n", " 15. Málaga + 17.1% ( 995,289 -> 1,165,168)\n", "\n", "Top 10 ciudades con mayor caida:\n", " 1. Huelva -100.0% ( 26,630 -> 0)\n", " 2. Jaén -100.0% ( 16,452 -> 0)\n", " 3. Villaviciosa -100.0% ( 13,655 -> 0)\n", " 4. Ejido, El -100.0% ( 19,820 -> 0)\n", " 5. Arcos de la Frontera -87.1% ( 16,866 -> 2,177)\n", " 6. Huesca -49.4% ( 21,476 -> 10,864)\n", " 7. Úbeda -22.8% ( 15,467 -> 11,936)\n", " 8. Sóller -18.3% ( 139,480 -> 114,008)\n", " 9. Palencia -17.8% ( 14,964 -> 12,307)\n", " 10. Cartagena -17.3% ( 85,415 -> 70,612)\n" ] } ], "source": [ "# Crecimiento interanual\n", "anual = (\n", " extranjeros\n", " .groupby(['ciudad', 'anio'])['valor']\n", " .sum()\n", " .reset_index()\n", ")\n", "\n", "# Pivotear para calcular crecimiento\n", "anual_pivot = anual.pivot(index='ciudad', columns='anio', values='valor')\n", "\n", "# Crecimiento ultimo anio vs anterior\n", "anio_prev = ultimo_anio - 1\n", "if anio_prev in anual_pivot.columns and ultimo_anio in anual_pivot.columns:\n", " crecimiento = pd.DataFrame({\n", " 'anterior': anual_pivot[anio_prev],\n", " 'actual': anual_pivot[ultimo_anio],\n", " }).dropna()\n", " crecimiento['cambio_pct'] = ((crecimiento['actual'] / crecimiento['anterior']) - 1) * 100\n", " crecimiento['cambio_abs'] = crecimiento['actual'] - crecimiento['anterior']\n", " \n", " # Top crecimiento (ciudades con volumen minimo)\n", " crece_filtrado = crecimiento[crecimiento['anterior'] > 10000].sort_values('cambio_pct', ascending=False)\n", " \n", " print(f'Top 15 ciudades con mayor crecimiento de turismo extranjero ({anio_prev} -> {ultimo_anio}):')\n", " for i, (ciudad, row) in enumerate(crece_filtrado.head(15).iterrows(), 1):\n", " signo = '+' if row['cambio_pct'] > 0 else ''\n", " print(f' {i:2d}. {ciudad:30s} {signo}{row[\"cambio_pct\"]:5.1f}% ({row[\"anterior\"]:>10,.0f} -> {row[\"actual\"]:>10,.0f})')\n", " \n", " print(f'\\nTop 10 ciudades con mayor caida:')\n", " for i, (ciudad, row) in enumerate(crece_filtrado.tail(10).sort_values('cambio_pct').iterrows(), 1):\n", " signo = '+' if row['cambio_pct'] > 0 else ''\n", " print(f' {i:2d}. {ciudad:30s} {signo}{row[\"cambio_pct\"]:5.1f}% ({row[\"anterior\"]:>10,.0f} -> {row[\"actual\"]:>10,.0f})')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 7. Estacionalidad — patrones mensuales por ciudad" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "coloraxis": "coloraxis", "hovertemplate": "x: %{x}
ciudad: %{y}
Viajeros: %{z}", "name": "0", "type": "heatmap", "x": [ "Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic" ], "xaxis": "x", "y": [ "Barcelona", "Calvià", "Madrid", "Palma", "Sevilla" ], "yaxis": "y", "z": { "bdata": "AAAAAETWGkEAAAAAXHIdQQAAAAB4hCFBAAAAABBuJEEAAAAA6s0lQQAAAACOHSVBAAAAADosJUEAAAAANHQmQQAAAACceCRBAAAAADBaJUEAAAAAqi8hQQAAAABQZh9BAAAAAAAAAAAAAAAAAAAAAAAAAAAAKd5AAAAAAJiMAUEAAAAAcDkNQQAAAABwWQ1BAAAAAIgSEEEAAAAAdLUQQQAAAABcIhBBAAAAAKiMBkEAAAAAACG7QAAAAAAAAAAAAAAAABRtF0EAAAAAHCkXQQAAAAAUxRxBAAAAAHBBIEEAAAAAlpshQQAAAAAM3iBBAAAAAKC/IUEAAAAAmO4fQQAAAAAauiBBAAAAAIbsIkEAAAAAWDceQQAAAACs+hpBAAAAAAB/4kAAAAAAoF7xQAAAAADARftAAAAAAOBeCUEAAAAArDsSQQAAAAD4/BJBAAAAADTRE0EAAAAArIUTQQAAAAAMZxFBAAAAAJB7DkEAAAAAQL7sQAAAAABgUedAAAAAABBI/kAAAAAACFEAQQAAAACIdgRBAAAAAJglB0EAAAAAoNoHQQAAAACI/ANBAAAAAMCtAUEAAAAAwFUEQQAAAABIcgZBAAAAALiICEEAAAAA8KICQQAAAAA4hQBB", "dtype": "f8", "shape": "5, 12" } } ], "layout": { "coloraxis": { "colorbar": { "title": { "text": "Viajeros" } }, "colorscale": [ [ 0, "rgb(255,255,204)" ], [ 0.125, "rgb(255,237,160)" ], [ 0.25, "rgb(254,217,118)" ], [ 0.375, "rgb(254,178,76)" ], [ 0.5, "rgb(253,141,60)" ], [ 0.625, "rgb(252,78,42)" ], [ 0.75, "rgb(227,26,28)" ], [ 0.875, "rgb(189,0,38)" ], [ 1, "rgb(128,0,38)" ] ] }, "height": 350, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermap": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermap" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Estacionalidad del turismo extranjero — Top 5 ciudades (2025)" }, "xaxis": { "anchor": "y", "domain": [ 0, 1 ] }, "yaxis": { "anchor": "x", "autorange": "reversed", "domain": [ 0, 1 ], "title": { "text": "ciudad" } } } }, "image/png": "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" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Heatmap de estacionalidad para top ciudades\n", "top5 = top_ciudades.head(5).index.tolist()\n", "\n", "estacional = (\n", " extranjeros[\n", " (extranjeros['ciudad'].isin(top5)) &\n", " (extranjeros['anio'] == ultimo_anio)\n", " ]\n", " .pivot_table(index='ciudad', columns='mes', values='valor', aggfunc='sum')\n", " .fillna(0)\n", ")\n", "\n", "meses = ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic']\n", "estacional.columns = [meses[m-1] for m in estacional.columns]\n", "\n", "fig = px.imshow(\n", " estacional,\n", " title=f'Estacionalidad del turismo extranjero — Top 5 ciudades ({ultimo_anio})',\n", " labels={'color': 'Viajeros'},\n", " color_continuous_scale='YlOrRd',\n", " aspect='auto'\n", ")\n", "fig.update_layout(height=350)\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 8. Resumen ejecutivo" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "=== RESUMEN 2025 ===\n", "Total viajeros extranjeros en hoteles: 49,697,349\n", "Total viajeros nacionales en hoteles: 32,599,738\n", "Ratio ext/nac: 1.52\n", "\n", "Top 5 ciudades por volumen extranjero:\n", " 1. Barcelona: 7,449,646 (15.0% del total)\n", " 2. Madrid: 6,107,041 (12.3% del total)\n", " 3. Palma: 2,324,397 (4.7% del total)\n", " 4. Sevilla: 1,958,368 (3.9% del total)\n", " 5. Calvià: 1,647,583 (3.3% del total)\n", "\n", "Top 5 ciudades por % de turismo extranjero:\n", " 1. Viveiro: 94.7% extranjeros\n", " 2. Vall de Boí, La: 94.1% extranjeros\n", " 3. Cazorla: 92.6% extranjeros\n", " 4. Sallent de Gállego: 91.1% extranjeros\n", " 5. Carboneras: 90.9% extranjeros\n" ] } ], "source": [ "# Resumen\n", "total_ext = extranjeros[extranjeros['anio'] == ultimo_anio]['valor'].sum()\n", "total_nac = viajeros[viajeros['Residencia'] == 'Residentes en España']['valor'].sum()\n", "\n", "print(f'=== RESUMEN {ultimo_anio} ===')\n", "print(f'Total viajeros extranjeros en hoteles: {total_ext:,.0f}')\n", "print(f'Total viajeros nacionales en hoteles: {total_nac:,.0f}')\n", "print(f'Ratio ext/nac: {total_ext/total_nac:.2f}')\n", "print()\n", "print(f'Top 5 ciudades por volumen extranjero:')\n", "for i, (c, v) in enumerate(top_ciudades.head(5).items(), 1):\n", " pct = v / total_ext * 100\n", " print(f' {i}. {c}: {v:,.0f} ({pct:.1f}% del total)')\n", "print()\n", "print(f'Top 5 ciudades por % de turismo extranjero:')\n", "for i, (c, row) in enumerate(pivot.head(5).iterrows(), 1):\n", " print(f' {i}. {c}: {row[\"pct_extranjeros\"]:.1f}% extranjeros')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.7" } }, "nbformat": 4, "nbformat_minor": 4 }