Files
turismo_spain/notebooks/01_turismo_extranjero.ipynb
fn-registry agent ea833af54c chore: initial sync
2026-04-28 22:13:09 +02:00

5281 lines
170 KiB
Plaintext

{
"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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Puntos turísticos</th>\n",
" <th>Viajeros y pernoctaciones</th>\n",
" <th>Residencia</th>\n",
" <th>Periodo</th>\n",
" <th>Total</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2026M02</td>\n",
" <td>18.573</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2026M01</td>\n",
" <td>18.376</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2025M12</td>\n",
" <td>23.737</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2025M11</td>\n",
" <td>21.544</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2025M10</td>\n",
" <td>24.269</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Puntos turísticos</th>\n",
" <th>Viajeros y pernoctaciones</th>\n",
" <th>Residencia</th>\n",
" <th>Periodo</th>\n",
" <th>Total</th>\n",
" <th>cod_municipio</th>\n",
" <th>ciudad</th>\n",
" <th>fecha</th>\n",
" <th>anio</th>\n",
" <th>mes</th>\n",
" <th>valor</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2026M02</td>\n",
" <td>18.573</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2026-02-01</td>\n",
" <td>2026</td>\n",
" <td>2</td>\n",
" <td>18573.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2026M01</td>\n",
" <td>18.376</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2026-01-01</td>\n",
" <td>2026</td>\n",
" <td>1</td>\n",
" <td>18376.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2025M12</td>\n",
" <td>23.737</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2025-12-01</td>\n",
" <td>2025</td>\n",
" <td>12</td>\n",
" <td>23737.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2025M11</td>\n",
" <td>21.544</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2025-11-01</td>\n",
" <td>2025</td>\n",
" <td>11</td>\n",
" <td>21544.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en España</td>\n",
" <td>2025M10</td>\n",
" <td>24.269</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2025-10-01</td>\n",
" <td>2025</td>\n",
" <td>10</td>\n",
" <td>24269.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Puntos turísticos</th>\n",
" <th>Viajeros y pernoctaciones</th>\n",
" <th>Residencia</th>\n",
" <th>Periodo</th>\n",
" <th>Total</th>\n",
" <th>cod_municipio</th>\n",
" <th>ciudad</th>\n",
" <th>fecha</th>\n",
" <th>anio</th>\n",
" <th>mes</th>\n",
" <th>valor</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>254</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en el Extranjero</td>\n",
" <td>2026M02</td>\n",
" <td>5.059</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2026-02-01</td>\n",
" <td>2026</td>\n",
" <td>2</td>\n",
" <td>5059.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>255</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en el Extranjero</td>\n",
" <td>2026M01</td>\n",
" <td>5.931</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2026-01-01</td>\n",
" <td>2026</td>\n",
" <td>1</td>\n",
" <td>5931.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>256</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en el Extranjero</td>\n",
" <td>2025M12</td>\n",
" <td>6.265</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2025-12-01</td>\n",
" <td>2025</td>\n",
" <td>12</td>\n",
" <td>6265.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>257</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en el Extranjero</td>\n",
" <td>2025M11</td>\n",
" <td>6.114</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2025-11-01</td>\n",
" <td>2025</td>\n",
" <td>11</td>\n",
" <td>6114.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>258</th>\n",
" <td>01059 Vitoria-Gasteiz</td>\n",
" <td>Viajero</td>\n",
" <td>Residentes en el Extranjero</td>\n",
" <td>2025M10</td>\n",
" <td>10.308</td>\n",
" <td>01059</td>\n",
" <td>Vitoria-Gasteiz</td>\n",
" <td>2025-10-01</td>\n",
" <td>2025</td>\n",
" <td>10</td>\n",
" <td>10308.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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}<br>Ciudad=%{y}<br>color=%{marker.color}<extra></extra>",
"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<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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à<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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<br>Mes=%{x}<br>Viajeros extranjeros=%{y}<extra></extra>",
"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": "<b>%{hovertext}</b><br><br>Viajeros totales=%{x}<br>% Extranjeros=%{y}<br>Viajeros extranjeros=%{marker.size}<br>ciudad=%{text}<extra></extra>",
"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}<br>ciudad: %{y}<br>Viajeros: %{z}<extra></extra>",
"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": "iVBORw0KGgoAAAANSUhEUgAAAwMAAAFeCAYAAADZrcMjAAAgAElEQVR4Xu2df9hdRX3gz5vgz3bJ0xAgJpoVLUabZEWMuCjbYKkUFkvzxLaBImy2sg30wQJLAVvZprFo+VEaqDyFuNjNghRSax5KZUOxVOJiWTGl1EBrpEo3mhggxOJaLIiw7/eGuc47mXPPzDkz93vOez73H8h7Z74z85m558znzJxzJl6Y/BR8IAABCEAAAhCAAAQgAIHeEZhABnrX5zQYAhCAAAQgAAEIQAACAwLIAAMBAhCAAAQgAAEIQAACPSWADPS042k2BCAAAQhAAAIQgAAEkAHGAAQgAAEIQAACEIAABHpKABnoacfTbAhAAAIQgAAEIAABCCADjAEIQAACEIAABCAAAQj0lAAy0NOOp9kQgAAEIAABCEAAAhBABhgDEIAABCAAAQhAAAIQ6CkBZKCnHU+zIQABCEAAAhCAAAQggAwwBiAAAQhAAAIQgAAEINBTAshATzueZkMAAhCAAAQgAAEIQAAZYAxAAAIQgAAEIAABCECgpwSQgZ52PM2GAAQgAAEIQAACEIAAMsAYgAAEIAABCEAAAhCAQE8JIAM97XiaDQEIQAACEIAABCAAAWSAMQABCEAAAhCAAAQgAIGeEkAGetrxNBsCEIAABCAAAQhAAALIAGMAAhCAAAQgAAEIQAACPSWADPS042k2BCAAAQhAAAIQgAAEkAHGAAQgAAEIQAACEIAABHpKABnoacfTbAhAAAIQgAAEIAABCCADjAEIQAACEIAABCAAAQj0lAAy0NOOp9kQgAAEIAABCEAAAhBABhgDEIAABCAAAQhAAAIQ6CkBZKCnHU+zIQABCEAAAhCAAAQggAwwBiAAAQhAAAIQgAAEINBTAshATzueZkMAAhCAAAQgAAEIQAAZYAxAAAIQgAAEIAABCECgpwSQgZ52PM2GAAQgAAEIQAACEIAAMsAYgAAEIAABCEAAAhCAQE8JIAM97XiaDQEIQAACEIAABCAAAWSAMQABCEAAAhCAAAQgAIGeEkAGetrxNBsCEIAABCAAAQhAAALIAGMAAhCAAAQgAAEIQAACPSWADPS042k2BCAAAQhAAAIQgAAEkAHGAAQgAAEIQAACEIAABHpKABnoQcevXL222P3E3mLLpmuiW3vv/duK1RddVVxy3unFqcuPi87vy3DldbcWGzbeWWy++fJiwfxDa8VcdOyq4vhlS4t1a8+Jyp+jPVEVIDEEIDDtCaQ4xrmQmhzHUwA/f821xV1bttY67qYov2kM0yeLFx5WbFy/pmk48kNgWhFovQwsW3FusWfvU6XQYyap45oImoPm+isuKI45aon6gHFPIjt2PlaceNrFRchBMQezFCfKcchAinpWdb4Z3w/fs6Eq6bT+Psc4awKsbb/hJm0JySvHiIe2P1qZNOSYURkkIsGo43+diwFu0THHwohqFzmOHZoycMttdxeXXn1TsWrlCcWFZ58yBYX5zv6jL535Xo7d9qfsHG5+g3Za3znVV76dx77oZI4zo+oX08+khcB0IdAJGRDYda5qu500rglH2yYSyMAPR0LMGMhxQnfHJDKwj0hMv4zj4Nu23/A42myXYSZYMRdbctRRfh9zD56d7UouMhDWa2X94JME81t2Zc2wtv9e9rv3/f7M8dgdk6YOoRffTOwmK9Nh1EgFge4QQAa601e1a9rkilKOSVqKSfZ0WRmo3anTLGOOcTbNEI21OX2RgVxQUxzj3Lo1OY43aeeoybZ895p5h+y3Au6bcJu/uaug8vcHtj0y5YKf/M23BVSkxL04GCsDkr/u+aMJR/JCoM0EppUM+JYLzVUEM9lwO8NcpfAtSUrasqsHvuVrk7bsRGD+buowZ/as/VY87Lynf+CjU7ZIuXUJrbPvJFJ2MHS3C0gdZZuWfTUmtFzTTndZ2MQMvTLj4yZ18m0TcOvmbmsInXS6ZZq2GA5lJ2bfCc+wfu9Jywb3X8jH9L0vzqhxLHntNty2+d4p2zvM1TF3fPpY+34ToX1ieLjl2Mvv5kqg73dk2ij984H3rxhysX+fpn/t38SFH75+2F7pC/nI9gX34149DP1duf3u8rDbZMp0r0jafWqPfTtW6FYJrZNHlQxU1d8eo/f/7T8M9pq7v6GQtqVYGfD1mX3sdY+FZccIE8e3xSTkGOc7Z/jOAfZv3GYkaeXjrpL7jhfuhNvHIHSbVR0J8Z0Dq1YXQq7sjzpehuQ3PMvEJGRMkgYC05HAtJEBc/CxDwju1YlRE0FJO2/unCn7IX1XN3xLnTIwJO1Rb3nT4CZb34HQTLLtg7Tvb/ZkxJ48+A6CoXUOlYFRV11cGWjKSiYHIRPPmD7wbblx2xQqA9Kno67uxcqAxPPtt3bjxIxjiekb72V/t8eerxzf38oOer7tFWW/DZko2ZMe3zaCUf1i/ybcE75MhESI7BsCfRPZmN9VWd/7tkT4yrKF2p2U+fYst3Efc5kMhNbfFk372BEzxqQffBPomPsWytohcW/62G8OHmDQRAZGnQ/cY5yU+ZEPnjnlKnroMdewcGXAt52m7LxnS0yV7Nm/e+ETu8fed24ruwAVc0yWGG7/l90zMEoO6qwmTMcJIG2CgCHQCRkIuYG4bHImP/p3vm3x4KAfc9ARQOZAb5/MQq6SuJPIUeW6B8iyCWjowSu0zqHlhjILLbdqkm3/NFNwc+sV2p6qesbKQNlVODdOk3FcNkZ8fx+1MhTy5KlR9ZQr9b6b9gwD3wk9RAZC5NGMH5lkHbnk8OFWg9jflS99GTN3m8OoY0TZdzm2lTQ5zZVNFkPrP6o/m1ztt69wh9x0H7IdpIkMhPIo6wvD2V018h0v3LKqGJvxXza2hOUXvvTQyKfE+Y7rVePKtMluQ5k0SazQY7KRnJD7WEzaMomp066qdvM9BLpMoBMy4F4N8QE3P/5RV42qDjplW4nsA0rIycU9+MZcYY6dtITUOWRloOykVsYspNwyVqETn1Hp3NijJmD2la2qMWCPrZh+M/lGbRPy7YF1691kHFf1lbtlzndSDe2bqqt8viv49naesivmdevkbtOQ/rCPBbG/qxihN2lNm6rGom+iFzouy353ISehmG0UZTJQ1e8hY6zpFo3QlZRQpk1kIPYYV7b90PTNqDqXrSL6JFnSykdWzOwr5yEC5bsgEzp2ymStqQzY2wpDHwvqW50wbUMGQo4YpOkTgWkjA9Jpvr3s9kS+6kqKuzfe3SM6as/oqEnkqJOfe8CKmbSYJXR7AuWrY4gMlF2t8zELKXcUq9AJ5yhu7km46hG0ZgIWOkHQWhloMo5DZWDUKlPINg7f/mP3oOmb1I96Qk/dlQET051gu+M55nfl6/uyrQh2u82krEwGRv0mQie44zo5+WQgpv6j+rOpDIyaWNp8QldT68pAzDGu7P4Zt46j6lx24aBsTNhb83zjN2S7lenHEBmoWrUJFUm3PXVEwD6O+mQJGRjXkYRyukJgWsmAC91MEKuuupSduHwH+7asDMTUOaUMhJYbc6Is+7HEyIB9JWzUj68LMpB6HLttrjvxtusVu4/YnYykWhko+z2mloGYSVHOlYFxnVhyrgyEbLUc1c5QGQj9rY9DBkJlNEYG3BWpmLFRtY0m9gp6lQhIvDo3ENcVAWQgZjSQFgJFMW1kwPcoMvdkUHY1oOwAHHqVXQaSvf8yZotB6N790CtIoXV2yy2beLsMY1iVHfxDVwZGnRhDubk/8tAJguTz7ec18XLdMxAyjkNXAExdfelz3TPgO6jaV71XnvyuwQvv3KeojLpSN2rPs8Ty7QtOLQPSrpALAZKOewZG358VyrHsBB16xX9Un9n3ktWVgVETXHfMlh1f3baMuogSc8+Azc53TIkZz1Xib37fZU9GMnUpY+Dec2PSG4ahTz3yXUQpe0dFzBhiogiBPhCYNjLge5KM70k0vgmq70qTfaXDt9XId3OU2Rrhm7yY7UDuE4LkrZ++p7y4S5tlJw1fPWTg2nUOWRmoYmDaVpWu6okV9hXikBtCfU/bMH3t2xoiW718z7E2T3qKkYFRJ2bfycTepmbXYdTkx+2bkHGcQgbMGK37pBfDxrfVwH5Si5l02Ol8NxjGTKzsA/Oo8ZHyngFbDl35EBbyGGDzyMdRMmD6zvfipdgntuQ8QZWtDITWv2zb06h93G57ZIxufXD7lCdFmbghW1wknm+cu5Lv+32654my84GPk+8YV5Vu1FPwpB3m2OJOuMu23kl58khXuU/Jl6asf31jatR4Lvst++L4zh1lx7KYm4Wl/3yP95Vza9n2pqZb1XL+9ogNAQ0CnZCBkKcJmUmHC7HqecvmpOzug5aDrjx6ruzKo3vDon0iL7uS6d48VvWeAXkCkvn4Jp+hdQ6RASnHF08ehSfPxvfdl2DqNoqVuz1EeMtjSTdsvDPo0aJmkmiPAZEI6ZeQ9wyYOppxECMD9gTQxPFNnu3vzDPV68pAyDhOIQNSjolj/2ZCBM2djLu/TzNRG7V1wHejtDv+fO8ZsH8Tph6+dyrI5Ny+Khi6TcPErFqNcI8zVfLtpnePHyFPSBnnCaJqslhVf/tqsT0+qq4e2230jU/5PlaafHHsSWKZrNttTHGM8x0L5SKF3FjvTlrd+99kfMgjdH1P+vLdDyCc7JhGwmy+IfcB2MdAX3rffXp2GT5pqxo7vmN+1e9NJv5V5377+6arU+P8LVIWBMZBoPUyMA4IlAEBCEDAJtBkPzYkwx8XCatuEGjyONi2tdC3Y6BtdaQ+EBg3AWRg3MQpDwIQaD2B6TT50YAduwKnUUfKDCfQtqddhdd8asrp0o667ScfBMoIIAOMDQhAAAKTBOztRjHbWYC3PwFkYPqNirLH+HalpWa1L/R+k660i3pCIAUBZCAFRWJAAAIQgAAEIAABCECggwSQgQ52GlWGAAQgAAEIQAACEIBACgLIQAqKxIAABCAAAQhAAAIQgEAHCSADHew0qgwBCEAAAhCAAAQgAIEUBJCBFBSJAQEIQAACEIAABCAAgQ4SQAY62GlUGQIQgAAEIAABCEAAAikIIAMpKBIDAhCAAAQgAAEIQAACHSSADHSw06gyBCAAAQhAAAIQgAAEUhBABlJQJAYEIAABCEAAAhCAAAQ6SAAZ6GCnUWUIQAACEIAABCAAAQikIIAMpKBIDAhAAAIQgAAEIAABCHSQADLQwU6jyhCAAAQgAAEIQAACEEhBABlIQZEYEIAABCAAAQhAAAIQ6CABZKCDnUaVIQABCEAAAhCAAAQgkIIAMpCCIjEgAAEIQAACEIAABCDQQQLIQAc7jSpDAAIQgAAEIAABCEAgBQFkIAVFYkAAAhCAAAQgAAEIQKCDBJCBDnYaVYYABCAAAQhAAAIQgEAKAshACorEgAAEIAABCEAAAhCAQAcJIAMd7DSqDAEIQAACEIAABCAAgRQEkIEUFIkBAQhAAAIQgAAEIACBDhJABjrYaVQZAhCAAAQgAAEIQAACKQggAykoEgMCEIAABCAAAQhAAAIdJIAMdLDTqDIEIAABCEAAAhCAAARSEEAGUlAkBgQgAAEIQAACEIAABDpIABnoYKdRZQhAAAIQgAAEIAABCKQggAykoEgMCEAAAhCAAAQgAAEIdJAAMtDBTqPKEIAABCAAAQhAAAIQSEEAGUhBkRgQgAAEIAABCEAAAhDoIAFkoIOdRpUhAAEIQAACEIAABCCQggAykIIiMSAAAQhAAAIQgAAEINBBAshABzuNKkMAAhCAAAQgAAEIQCAFAWQgBUViQAACEIAABCAAAQhAoIMEkIEOdhpVhgAEIAABCEAAAhCAQAoCyEAKisSAAAQgAAEIQAACEIBABwkgAx3sNKoMAQhAAAIQgAAEIACBFASQgRQUiQEBCEAAAhCAAAQgAIEOEkAGOthpVBkCEIAABCAAAQhAAAIpCCADKSgSAwIQgAAEIAABCEAAAh0kgAx0sNOoMgQgAAEIQAACEIAABFIQQAZSUCQGBCAAAQhAAAIQgAAEOkgAGehgp1FlCEAAAhCAAAQgAAEIpCCADKSgSAwIQAACEIAABCAAAQh0kAAy0MFOo8oQgAAEIAABCEAAAhBIQQAZSEGRGBCAAAQgAAEIQAACEOggAWSgg51GlSEAAQhAAAIQgAAEIJCCADKQgiIxIAABCEAAAhCAAAQg0EECyEBLOu0Hp7+5JTWJr8azO5+Jz9SiHN/c9r0W1SauKl/e8/K4DC1KvaNFdalTlVl1MrUkzwstqUedanyzTqYW5VnUorrEVuXJ2AwtSn/8od09zgvGWXNf0iKacVWZ/eDX4jKQeuwEkIGxI/cXiAzodQQyoMMeGdDhLqUiA3rskQEd9siADncpFRnQYx9aMjIQSipzOmQgM+AR4ZEBHfbIgA53ZECPu5SMDOjwRwZ0uCMDetxjSkYGYmhlTIsMZIRbERoZ0GGPDOhwRwb0uCMDeuyRAT32rAzosQ8tGRkIJZU5HTKQGTArA3qAS0pGBvS6hG1CeuxZGdBhjwzocGdlQI97TMnIQAytjGmRgYxwWRnQgzuiZGRAr1uQAT32yIAOe2RAhzsyoMc9pmRkIIZWxrTIQEa4yIAeXGSgleyRAb1uQQZ02CMDOtyRAT3uMSUjAzG0MqZFBjLCRQb04CIDrWSPDOh1CzKgwx4Z0OGODOhxjykZGYihlTEtMpARLjKgBxcZaCV7ZECvW5ABHfbIgA53ZECPe0zJyEAMrYxpkYGMcJEBPbjIQCvZIwN63YIM6LBHBnS4IwN63GNKRgZiaGVMiwxkhIsM6MFFBlrJHhnQ6xZkQIc9MqDDHRnQ4x5TMjJQQev8NdcOUqxbe04M1+i0yEA0smQZeM9AMpRRgXiaUBSupImRgaQ4o4IhA1G4kiVGBpKhjA7EewaikY09Q2tlYMfOx4oTT7t4PyAP37NhrJCQgWrcz+58pjpRi1MgAzqdgwzocJdSkQE99siADntkQIe7lIoM6LEPLbn1MrD+iguKY45aMmjPytVri3lzD8p+ld6GhwxUDyVkoJpRrhRf3vPyXKGzx0UGsiMuLQAZ0GOPDOiwRwZ0uCMDetxjSu6UDFx53a3F1ge3FxvXrxm0USbqd23ZOmzvJeedXpy6/LjBvxcdu6pYtfKEYsPGOwf/NlJh55kze1axZdM1g+9vue3u4tKrbxrGMisQPhmQ2OZjl2lk5YFtjxR79j41SLL55suLBfMPHfz/shXnDv/ufsc2oZhhmzYtKwNpeYZGQwZCSaVPhwykZxoaERkIJZU2HTKQlmdMtBwrAzIflPmdPcey62TmgBeefcpg7nXkksOjLiTL3E/mcmaOGNPeLqbtlAxIh551xsnDCb8MBulo+ZiBYSbxMhDsyb5J85nP3jfsXMmz8uR3FTt2Pl6svuiq4aCSQbBr95MD6XBlwF6dMFuZjGjIdw9tf3RKHCnX3G9g11fSyseIDTKg9/NBBnTYIwM63KVUZECPPTKgwx4Z0OEupeaQAYlrT/jt1t17/7Ypczq9lnen5NbLgIvSvhJvf2cm5sYSZZC4aV2ZMPndCb8ZSCIW9nduGZLf/t7dxuSuZNj1lZWI62+8fSgmyIDejwYZ0GGPDOhwRwb0uA8mMLrFNyr9yUa5dTMjA3r8c8mAfeHWbp37d3du5u7SkLzmQrJ9v6rvgrLZbSJ57DmmzPfkYrNcsDa7TMz37s4Td27qfm/XZ1y91noZsO8ZMCZoQJpJuw1rlAyIILjxJK+5ou9Cl1jrPv6pwZ/l6r4tCbZImFUEnwy4KxH2QLIHGjIwriG/fznIgA57ZECHOzKgxx0Z0GOPDOixzyUDZSsA7sVgnwzY23/cnRpCykzuTTr33+7OELM75fhlS6dsRzITfTM3Nfnceay93Ulk5r0nLRveLzuOnuucDEinLT1i4WB7jzxtyABNuTLgGqaRgTorA0YG3AHBysA4hndYGchAGKfUqZCB1ETD47FNKJxV6pSsDKQmGhYPGQjjlCNVLhmQuspV/ve8++jhlnEz17KfPFn18BlfHnfyL4Lh3p9g7wxx0xuOZs5qtrQb0TD3v7pzwRz8Q2J2SgZsE1sw/5CBDJjOcSfbvm1CPtPz3TMg4KQD69wzYD/tyC7P7XD35hRWBkKGa540yEAerlVRkYEqQvm+Rwbysa2KjAxUEcrzPTKQh2tI1Jwy4M7rfBN/39/sB8GYNtgCYcf17UIxeRYvPGwwVyyTAd9c1JYP9zH6ZVvhQzg3SdN6GXAbZ4OynwwkHWLfvOvrADPJl3TyGfU0IbPUU+dpQvYNw/Y2IXufmtR39xN7uWegyehNlBcZSAQyMgwyEAksYXJkICHMyFDIQCSwRMmRgUQga4TJKQO+i8TudnBbBszEXp42aa7WV60MhNyQXFcGbJy2oPi2tNdAH5yltTIQ3IJpkpCVAb2ORAZ02CMDOtylVGRAjz0yoMMeGdDhLqXmlAFzkVd2ZcybO2dwE6/7OFBbBnyT9ioZkDLKLjAbqnW3Cfl6xd36NI6eQwbGQTmgDGQgAFKmJMhAJrAVYZEBHe7IgB73waRCt/hGpfM0oUb4GmWeNfcljfJrZs4tA2YyL7s97PsHTJttGfBN/M2ujbJtQhLH7ESx7xuQFYNP37FlcMNwmQxU3UAs+V79qoOHj8wPEY8cfYkM5KBaIyYyUANaoizIQCKQkWGQgUhgCZOzMpAQZmQoZCASWKLkrAwkAlkjTG4ZMBNo+a/vJWTuPQPuC2vNC2pHyYDENk8MshGY7TxlMiBpRz1a1Hc/gsZ9A8hAjYGdIwsykINqWExkIIxT6lTIQGqi4fGQgXBWqVMiA6mJhsVDBsI45Ug1DhlIXe9R74lKXVYb4iEDbeiFyTogA3odgQzosEcGdLhLqciAHntkQIc9MqDDXUrtogxUPY5Uj2aekpGBPFyjoyID0ciSZUAGkqGMCoQMROFKmhgZSIozKhgyEIUrWWJkIBnK6EBdkQF7y4779uHoRncsAzLQkg5DBvQ6AhnQYY8M6HBnZUCPu5SMDOjwRwZ0uHd1ZUCPlk7JyIAO9/1KRQb0OgIZ0GGPDOhwRwb0uCMDeuyRAT32XVkZ0COkXzIyoN8HgxogA3odgQzosEcGdLgjA3rckQE99siAHntkQI99aMnIQCipzOmQgcyAR4RHBnTYIwM63JEBPe7IgB57ZECPPTKgxz60ZGQglFTmdMhAZsDIgB7gkpKRAb0u4QZiPfbcM6DDHhnQ4S6lIgN67ENLRgZCSWVOhwxkBowM6AFGBlrHHhnQ6xJkQIc9MqDDHRnQ4x5TMjIQQytjWmQgI9yK0GwT0mHPyoAOdykVGdBjjwzosEcGdLgjA3rcY0pGBmJoZU37N1mjE3wEgWef6iyeFx77UmfrXjz6cHfrPqh5h6fUTz/dXfbPfb+7dZeaH3BAd+v/usM7W/eJw9/b2boPKj4xs8P1f2vyuv/OxMLkMUMC/rcXtock61waZKA1XYYMqHUFMqCDHhnQ4S6lIgN67JEBFfbIgAr2FwtNLwO/qyQDv4EMaA6kPpSNDKj1MjKggx4Z0OGODOhxZ2VAjT0yoIZ+suD0MnClkgxciAxoDqQ+lI0MqPUyMqCDHhnQ4Y4M6HFHBtTYIwNq6LPIwDolGTgfGdAcSH0oGxlQ62VkQAc9MqDDHRnQ444MqLFHBtTQZ5GBP1CSgV9DBjQHUh/KRgbUehkZ0EGPDOhwRwb0uCMDauyRATX0WWTgD5Vk4FeRAc2B1IeykQG1XkYGdNAjAzrckQE97siAGntkQA19Fhn4uJIM/AoyoDmQ+lA2MqDWy8iADnpkQIc7MqDHHRlQY48MqKHPIgN/pCQDv4wMaA6kPpSNDKj1MjKggx4Z0OGODOhxRwbU2CMDauizyMCNSjJwBjKgOZD6UDYyoNbLyIAOemRAhzsyoMcdGVBjjwyooc8iA3+sJAO/hAxoDqQ+lI0MqPUyMqCDHhnQ4Y4M6HFHBtTYIwNq6LPIwJ8oycAvIgOaA6k9Ze/Y+Vhx4mkXF5tvvrxYMP/QkRVbuXptMW/uQcW6tecM0pm8q1aeUFx49ilOXmRArZeRAR30yIAOd2RAjzsyoMYeGVBDn0UGNinJwApkQHMg5Sn7/DXXFndt2ToMPmf2rGLLpmtGFtZEBkzgRceu8sgEMpCnlwOiIgMBkDIkQQYyQA0M+fTTgQlbmOy577ewUhFVOuCAiMQtS/q6w1tWofDqIAPhrNKnTP8G4j9TkoGfQwbSDw/NiMtWnFvMPXh2sXH9mmE1rrzu1uLVrzq4OHX5caVVi5GBuPYhA3G8EqZGBhLCjAiFDETASpwUGUgMNCIcMhABK11SZCAdy/hI6WXgDiUZOAkZiO/+tua45ba7i0uvvql4+J4NpVV0Vw0uOe/0gSS4MiBX+c13Esz+ft3HPzWIb7YJiYDs2fvUsMypW42QAbXxggzooEcGdLhLqciAHntkQIU9MqCC/cVC08vAXyjJwM8gA5oDKW3ZMtG3J+m+6LJKYPb1y/9v2HjnQB5cGXBjSdpdu/cMBMD3nYkp9xPI54crE8hA2l6OiIYMRMBKmBQZSAgzMhQyEAksYXJkICHM8FDIQDir9CnTy8DdSjJwHDKQfnhoRQyRAbtutgDI3+0biO+9f1ux+qKrhqsMcvX/Ix88szjmqCX7yYAdU1Ynrr/xduseBWRAazwUyIAOemRAh7uUigzosUcGVNgjAyrYXyw0vQzcM2OhSoOOfX67Srm5C514YfKTu5C2xQ+RATPJt+su23pcGZB/iwCcdcbJxWvmHVJ86LIbhhN838qArDCYz9QblpEBtXGCDOigRwZ0uCMDetylZGRAhT8yoII9mwx8/oA3qDToJ5/76ljKNXPQkCdXpqhQL2Wg6p4BsxLgu0/AJwOyNWjrg9uLpUfsM1WzFciWAVOm6VhWBlIM30QxkIFEICPDIAORwBImZ2UgIczIUMhAJLA0yZGBNBzrRTxySq8AACAASURBVEm/MvCFl+o82eqdzz6yHwIzZzRf2BN4M/cz37n3qtr3py5eeNhw6zgyUG+kReca9TShd75t8ZStQPZE3icD9kCwB4ErA/a2IPnugW2PsE0ouucyZEAGMkANCIkMBEDKlAQZyAQ2ICwyEAApfRJkID3T8IjpZeC+l+nIwNHPTJUBM2lff8UFg+3h9se9x9RcODb3iroXheVeUrmoLBeUkYHw0dU4pYB/aPujwzi2lbm2JunKtglJgP1vCC72u2fAfpqQlLX7ib3IQONeTBAAGUgAsUYIZKAGtERZkIFEIGuEQQZqQGueBRlozrB+hPQy8MVX/Hj96jTI+fbv/eOU3DL3W37iMd5H0ruTf1cO7Mm/BLXlwJUB82//S2sbNOjFrL3cJtQcW44I3DOQg2pQTGQgCFPyRMhAcqTBAZGBYFTJEyIDyZGGBEQGQijlSpNeBra+8vW5Kjsy7tKnvzble3m8vNz/aR4bb98L6rs/VdKbVQRzv6l5t5X9QBpbBqRA+8E1ORqODOSgWismMlALW4pMyEAKivExkIF4ZqlyIAOpSMbHQQbimSXIgQwkgFg7RHoZeOBHdWTgyO/+UAbMlX57i5C9S0T+f97cg4bvmhJ89rup3PdU2QKwY+fjgydVyo4UEQHfNqTa3eHJiAykpNkoFjLQCF+TzMhAE3r18yID9dk1zYkMNCVYPz8yUJ9dg5zIQAN4jbOml4G/O/B1jWtVJ8Cbv/P1YTZ32498YW/1SbEyIDHtLex16hySBxkIoTSWNMjAWDD7CkEGdNAjAzrcpVRkQI89MqDCHhlQwf5ioellYNusw1QatOSpH95nKhWwt/24MpDingFZEfj0HVsGbZWX2eb6IAO5yEbHRQaikaXKgAykIhkXBxmI45UyNTKQkmZcLGQgjlei1MhAIpC1wqSXgb//MR0Z+IlvT5UBufq/a/eTw0eCyn0A73n30YMnAqV8mpB7s3GtbhiRCRlITbR2PGSgNrqmGZGBpgTr5UcG6nFLkQsZSEGxXgxkoB63hrmQgYYAG2VPLwNfOei1jWpUN/Mbn/yn/bLaT6Y8ftnSKVfwU75nQFYhcm0ZQgbqjojk+ZCB5EhDAyIDoaTSpkMG0vKMiYYMxNBKmxYZSMszMBoyEAgqS7L0MvDVOToy8IY9+8tAFmRjDooMjBl4eXHIgFpXIAM66JEBHe5SKjKgxx4ZUGGPDKhgf7HQ9DLwtUP+rUqDXv/4/1UpN3ehpTIgyxGhH/f1yqH5SGcTQAbUxgMyoIMeGdDhjgzocZeSkQEV/siACvZsMvDo3AUqDTps9w6VcnMXGrQyUPaGtVFvXstd8ekXHxlQ61NkQAc9MqDDHRnQ444MqLFHBtTQTxacfmVgx6t0ZGDBt3osA+6jk8yQsp+nqjnMpkfZyIBaPyIDOuiRAR3uyIAed2RAjT0yoIY+iwx8c/5rVBr06p3fUCk3d6FBKwNlMmC/Ojl3Rad/fGRArY+RAR30yIAOd2RAjzsyoMYeGVBDn0UGdi3QWRmYt6PHKwNl24FEBj502Q3Flk3XaI6yaVI2MqDWkciADnpkQIc7MqDHHRlQY48MqKHPIgPfep3ODcSv+nrPbiC2h41ZAZA3oR1z1JLhV7JisGrlCYOXK/BpRuD533lHswCauWdOaJbeuOznPr+3cQytAN/++ve0im5c7lPdxT5o+ytf9oPGDLQCfPdfZ2oV3bjcOXO7fbx55jvdHTffeOKljftPK8Cit87QKjpJua987cuTxNEIMvPmLycv9rHDX5s8ZkjAQx/5p5BknUsTtE1IWmXepGa38JLzTi9OXX5c5xrdxgojA3q9ggzosEcGdLhLqciAHntkQIc9MqDDXUrNIQOPv1HnDcSHfGXqG4j1qKYtOVgG0hZLNJcAMqA3JpABHfbIgA53ZECPu5SMDOjwRwZ0uOeSgT2LdWRgzkPIgN5I6kHJyIBeJyMDOuyRAR3uyIAed2RAjz0yoMc+x8rA3je/TqVBs//u6yrl5i40aGXAt0XIrhgvHWveTchAc4Z1IyADdck1y4cMNOPXJDfbhJrQa5aXlYFm/OrmRgbqkmueL4cMfPvI1zevWI0IP/bA12rkan+WIBlYtuLc4j3vPro4+q2Lpjw9iJeOpetgZCAdy9hIyEAssTTpkYE0HOtEQQbqUEuTBxlIwzE2CjIQSyxd+hwy8NTbfjxdBSMizfrSP0ak7k7SIBkw7xlYMP+Q4vQPfHT4KFEeLZquo5GBdCxjIyEDscTSpEcG0nCsEwUZqEMtTR5kIA3H2CjIQCyxdOlzyMB3jj48XQUjIh143yMRqbuTNEoG5LGiIgZmWxAvHUvX0chAOpaxkZCBWGJp0iMDaTjWiYIM1KGWJg8ykIZjbBRkIJZYuvQ5ZOC7x7whXQUjIv3ovV+NSN2dpEEyINuBlh6xcPA+Afv/r7zu1uIzn72Pl44l6G9kIAHEmiGQgZrgGmZDBhoCbJAdGWgAr2FWZKAhwJrZkYGa4BJkyyED/7JsYYKaxYf4kS3b4zN1IEeQDLjtkNUB89l88+XFgvmHdqCp7a4iMqDXP8iADntkQIe7lIoM6LFHBnTYIwM63KXUHDLwvePeqNKgV9z9FZVycxdaSwZyV6qP8ZEBvV5HBnTYIwM63JEBPe5SMjKgwx8Z0OGeSwaeOf5NKg162V3/oFJu7kKRgZqEb7nt7uLSq28a3j/hCyMrKGVvaXbzIwM1OyJBNmQgAcQaIZCBGtASZWFlIBHIGmGQgRrQEmRBBhJArBkix8rAsyfqyMBLN/dMBuytQFX93/b3DJy/5triri1bi/VXXFDITdDmI/c/PLT90f3+XtVe+R4ZsCjNnAhB1to0yIBO1yADOtylVGRAjz0yoMMeGdDhLqXmkIHnfvYnVBp0wJ//vUq5uQsNWhkoe59AV94zIDLwwLZHirkHzy42rl8zYGoei7pn71PZZGBU57EykHtoh8dHBsJZpUyJDKSkGRcLGYjjlTI1MpCSZngsZCCcVeqUOWTgB8sXpa5mULyZtz0clK5riYJkwLxnwL6qLg2VCe31N97e+qcJiQzIZ9fuJ4sPvH/FYHVA/nbUW9402OpjVgzcNy3PmT1rStvk6UkbNt45pY/NqogwWrXyhOH3EvNDl91QnHXGycWpy48b5BmVn21Cej8dZECHPTKgw11KRQb02CMDOuyRAR3uUmoWGfj5xSoNmvmnD6mUm7vQRjLQlfcMGBl470nLio99YlNx5W+dVVz44esH/z3xtIuHMiDtkY+RHjPBl0eqmraapye5V/YlrSsP8uZmIwNV+ZGB3EO9PD4yoMMeGdDhjgzocZeSkQEd/siADvdsMnDKv1Np0Mxbv6xSbu5Cg2SgbDtQV95AbGRg3dpzCpmgy+cjHzxz8pGoh0yRARe2nc/+f0nnkwH3ZmFbBqryIwO5hzoyoEfYXzIyoNcjrAzosUcGdNgjAzrcs8nA+96s0qCZn/w7lXJzFxokA+aqtnsDrn3lPHdFm8S3J+L21iazLchul7mp2JR3/LKlhUiE/bK1OjJQlR8ZaNLDzfKyMtCMX93cyEBdcs3zIQPNGdaNgAzUJdcsHzLQjF+T3Fm2Ca06okmVauedueHB2nnbnDFIBqQB7n56+VvZYzPb1mD3qrypnysD5kbjLZuuGSRhZSCwJ3maUCCo9Mm+/fXvpQ86pojIwJhAe4pBBvTYIwM67JEBHe5SahYZOPMtKg2aecPfjqVcd2t57kKDZSB3RXLGj5EBqYesBMhHtvkcueTwwb/dbUHmcaX2DcSjtglV5WdlIOcIGB2blQEd9siADncpFRnQY48M6LBHBnS4Z5OBs45UadDM6x8oLdedF0pCM/czmdxH8Zs88v3ihYdNeeLl6ouuKsx9qrkbiwxYNxC7qx/SMfPmHjSUA3sLkXwn7ygIlQHpyFH5kYHcQ708PjKgwx4Z0OGODOhxl5KRAR3+yIAO92wycM5bVRo089q/8ZZrdpbI4+rNvNDMKc2EXp4oufXB7cMJv/tETns7eStXBqpeQNb2l46pjJjIQpGBSGAJkyMDCWFGhEIGImAlTsrKQGKgEeGQgQhYCZMiAwlhRobKsU3o+fOWRtYiTfIZV2/dL5BM8nft3lPIEyvlar6ZE7uTf1cOfPeSmsf1uzJg/i2PsJcnXKb+NFoZkG008lQe9/0DqSvZh3jIgF4vIwM67JEBHe5SKjKgxx4Z0GGPDOhwz7Uy8PyvH6XSoBm/d/+Ucu0Jv/u4fd8Wdfu9XfYTJyWond+WAflOHoOfc8tQIxmQJY7bNt87XPJQ6ZlpUigyoNeRyIAOe2RAhzsyoMddSkYGdPgjAzrcs8nAB9+u0qAZl31xWK67zceVAbnyb281l4wiA+b+Uvv/bRmQSf+OnY8PVhnk/+33YeVqdCMZ6MpLx3LBSxkXGUhJMy4WMhDHK1VqZCAVyfg4rAzEM0uVAxlIRTIuDjIQxytl6izbhC759ymrGBxrxqX/Z5jWvvnXDSCT+HUf/9Tgz+ahNEYGzOPsQ1YGJI99Y3FwRSMTIgORwHIlRwZyka2OiwxUM8qRAhnIQTUsJjIQxilHKmQgB9XqmMhANaNcKbLIwG8fnau6I+PO+O37Sr93L5CnuGdAxOHTd2zZTypSN76RDIgV7dr9JNuEEvQKMpAAYs0QyEBNcA2zIQMNATbIjgw0gNcwKzLQEGDN7MhATXAJsmWRgUvfkaBm8SFmXPLXwTKQ8mlC7s3G8TUfnSNIBsqeJjRn9qzCvKArdcX6Fg8Z0OtxZECHPTKgw11KRQb02CMDOuyRAR3uUmoWGbjsnSoNmvHBLwTLgCRM+Z4BmYvn2jIUJAMqxHtWKDKg1+HIgA57ZECHOzKgx11KRgZ0+CMDOtyzycDvHaPSoBm/fq9KubkLRQZyEw6MjwwEgsqQDBnIADUgJDIQAClTElYGMoENCIsMBEDKkAQZyAA1MGSWlYF1PxlYetpkM87/fNqALYmGDLSkI5ABvY5ABnTYIwM63FkZ0OPOyoAee2RAj30WGfiDZSoNmvFr+27mnW6fkTJgnoF66dU3jWw3byBuPiyQgeYM60ZABuqSa5YPGWjGr0luVgaa0GuWl5WBZvzq5kYG6pJrni+LDFx7bPOK1Ygw45x7auRqfxZWBlrSR8iAXkcgAzrskQEd7lIqMqDHHhnQYY8M6HCXUrPIwB++S6VBM371cyrl5i40SAbMixXcFQBZOTh+2dIpL1TIXeHpGh8Z0OtZZECHPTKgwx0Z0OMuJSMDOvyRAR3u2WRg/U+pNGjG6r9SKTd3oUEy4L4lzVTKfRVz7spO6/jPfLa7zXvmn7tbd6n5vz7Z2fq/sOuhzta9+OrXult3qfn3n+9s/V94trt1n5jRWez7Kn7gS7vbgFkHdrbuE0ed0tm6Dyo+8yXdrf8r/mPyuj//349LHjMk4Iz/cndIss6lCZIBWQEwr0+2W+i+ba1zrW9ThZEBvd5ABnTYIwM63CdLRQbU0CMDSuiRASXwUmwOGfjET6s0aMb7/1Kl3NyFBskAKwO5u2EyPjIwBsglRSADOuyRAR3uyIAa90HBrAyo8EcGVLDvKzSHDGx4t0qDZqzq8C6OEcSCZMC8QW3zzZcXC+YfOghnXrN8yXmnF6cu11muURkJuQpFBnKRrY6LDFQzypECGchBNSgmKwNBmPIkQgbycK2IigyoYM8mAy/ceLxKgybOuEul3NyFBsmAVMJsCbIr5Ns6lLvC0zY+MqDXtciADntkQIf7ZKnIgBp6VgaU0CMDSuCl2AwrAy988mdUGjTxvr9QKTd3ocEykLsivY+PDOgNAWRAhz0yoMMdGVDjPiiYlQEV/siACvZ9heaQgVtOUGnQxKl3qpSbu1BkIDfh0PjIQCip9OmQgfRMQyIiAyGUsqRhZSAL1rCgyEAYp8SpkIHEQGPC5ZCBjSfG1CBZ2omVm5PFalMgZKAtvYEM6PUEMqDDHhnQ4T5ZKjKghp6VASX0yIAS+FwrA59K/7jSEEITv/C/QpJ1Lg0y0JYuQwb0egIZ0GGPDOhwRwbUuA8KZmVAhT8yoIJ9X6E5VgY2naTSoIkVd6iUm7tQZCA34dD4yEAoqfTpkIH0TEMiIgMhlLKkYWUgC9awoMhAGKfEqZCBxEBjwuWQgdveE1ODZGknln8mWaw2BUIG2tIbyIBeTyADOuyRAR3uk6UiA2roWRlQQo8MKIHPtTJw+8+qNGji5D9XKTd3ochABGF538L1N95ebNl0TUSuwKTIQCCoDMmQgQxQA0IiAwGQ8iRBBvJwDYrKykAQptSJkIHURCPi5VgZuOPnIiqQLunESX+WLliLIvVSBswL0+x+WLXyhOLCs08Z2TXIQAmeZ/65RUO6RlWQgRrQEmRBBhJArBcCGajHLUkuZCAJxtggyEAssYTpc8jA5hUJKxgeauLETeGJO5Sy1zJgXpoW+jZlZAAZaNtv+4VdD7WtSuH1QQbCWSVOiQwkBhoTDhmIoZUsLTKQDGV8oBwycNfPx9cjQY6J4/80QZT2hUAGjloy6JXz11w7+O+6tecUy1acW+zZ+9SwtzbffHmxYP6hhSsDK1evLebNPai4a8vWKWlPPO3i4b8fvmfD8P/L4g4SsE1I79fByoAOe2RAh/tkqciAGnruGVBCjwwogZdic8jAX65UadDET29UKTd3ociARwauvO7W4ZYhmfDLZ+P6NV4ZeGj7o4WZ8Eta+beRByMLIhjyKYuLDOQe5hXxkQGdDkAGdLgjA2rcBwWzMqDCHxlQwb6v0Bwy8LlfUmnQxLv+WKXc3IUiA5MycO/924rVF11VmG1DNnR7NaBsZcBM9u3VBYnh/rssLjKQe5gjA8qE/cUjA2rdwsqAGnpkQAk9MqAEPpcMbHmfSoMmln1SpdzchfZaBmy4tgjIFfwNG+8cfj1n9qzBE4RCZGDX7icHqwhGBux/l8VFBnIPc2RAmTAy0LIOQAYUO4SVARX4yIAK9n2F5lgZuPc/qTRo4pj/qVJu7kJ7LQNlKwGXXn3TcKtP7MpAmQxInLK4yEDuYY4MKBNGBlrWAciAYocgAyrwkQEV7Plk4K9/WaVBE+/4o7GUa3asmG3nuQtFBl68Z8CAdq/+y1afB7Y90nhlYFRcZCD3MEcGlAkjAy3rAGRAsUOQARX4yIAK9nwy8MUzVRo08fYbppQrc0T7ITLuY+rNhWCTyX6ojPzNzr944WHDnSXIwBi61zxK1LcyIMXbT/2Rztn9xN7GMjAqLjIwhk4fVQQ3EOt0APcM6HCfLBUZUEPPPQNK6JEBJfBSbI5tQl9ardKgibetn1KuPCjGbA1355bm3+bqvmwV3/rg9mF639bzpUcsHDzABhlQ6d4WFMqjRfU6ARnQYY8M6HBHBtS4DwpmZUCFPzKggn1foTlk4IFfVWnQxJF/OLJcuZh81hknF6cuP27wBEl78u/KgYiEmfxLUFsOXBkw/w55QW4dML3cJlQHVPY8yEB2xKUFIAM67JEBHe7IgBp3ZEAPPTKgxz6LDDy475Ht4/5MHLHvnVRln0XHrho+mdL3REn7e1scJJ6Z8MtWIlsG5Dt5f1XO+weQgXGPpLLykAG9nkAGdNgjAzrckQE17siAHnpkQI99FhnYdq5KgyaWXFNarkz+7YfIuO+akowiA5ecd/pg5cD+f1sGZNK/Y+fjg0fey/+LCJRta08FARlIRbJpHGSgKcH6+ZGB+uya5EQGmtBrlJd7Bhrha5aZbULN+NXMjQzUBJciW45tQg//1xQ1i44xsej3vXnsh82YBClWBiSWfWNxdIUDMyADgaCyJ0MGsiMuLQAZ0GGPDOhwnywVGVBDzz0DSuiRASXwUmwOGfjKr6s0aOKNv7dfuT4RkEQp7hmQFYFP37FlUKZ5wW2OhiMDOajWiYkM1KGWJg8ykIZjbBRkIJZYsvTIQDKU8YFYGYhnliAHMpAAYt0QOWTgqxfXrU2jfBNvuHxKftkKJB/zRCH7y5RPE3JvNm7UCE9mZCA10brxkIG65JrnQwaaM6wTARmoQy1JHmQgCcZ6QZCBetwa5kIGGgJskj2HDDzym01qVDvvxOEfHeY1k3032JzZswaPo5dPyvcMyD0GubYMIQO1h0TijMhAYqAR4ZCBCFgJkyIDCWHGhUIG4nglTY0MJMUZGgwZCCWVIV0OGfjaJRkqWh1y4vWXVifqYApkoC2dhgzo9QQyoMMeGdDhPlkqMqCGnnsGlNAjA0rgpdgcMvD1NSoNmnjdvm1B0+2DDLSlR5EBvZ5ABnTYIwM63JEBNe6DglkZUOGPDKhg31doDhl49MMqDZo47LdUys1dKDKQm3BofGQglFT6dMhAeqYhEZGBEEpZ0rAykAVrWFBkIIxT4lTIQGKgMeFyyMA/6WzXmXitzvakGNx10iIDdajlyIMM5KAaFhMZCOOUOhUykJpocDxkIBhV+oTIQHqmARGRgQBIuZLkkIEdv5urtiPjTiz4DZVycxeKDOQmHBofGQgllT4dMpCeaUhEZCCEUpY0yEAWrGFBkYEwTolTIQOJgcaEyyED37gipgbJ0k685qJksdoUCBloS2986w/aUpP4ejz/XHyeFuV44Zl/blFtIqvy7NORGVqU/AfPt6gyNaryigNrZGpJlpe8oiUVqVGN73d4zEtzn/vXGo1uSZZnOlz3Aw9pCcR61Zg44OX1MrYh1/wL0tfim/u//Ct9IZ6Ir9Z52VnutiEDuQmHxkcGQkklT4cMJEcaFhAZCOOUIxUykINqWExkIIxT6lTIQGqi4fFyyMDOdeHlp0w5//yU0VoTCxloS1cgA2o9gQwooUcGlMBPFosM6LFHBnTYIwM63KXUHDKgNWd61a/pccxYMjKQEW5UaK2BHVXJksRsE0pBsV4MtgnV45YiF9uEUlCMj8E2oXhmqXKwTSgVyeg4bBNykO2+Npphkgxzz0kSpm1BkIG29AgyoNYTrAwooWdlQAk8KwN64CdLZmVABz8rAzrcc60MPHadTnsOPVun3MylIgOZAQeHRwaCUaVOiAykJhoYDxkIBJUhGduEMkANDIkMBIJKnAwZSAw0IlyObUJPfDyiAgmTHvwrCYO1JxQy0Ja+QAbUegIZUEKPDCiBZ2VADzwrA2rskQE19FnuGdhzg0575pypU27mUpGBzICDwyMDwahSJ0QGUhMNjIcMBILKkIyVgQxQA0OyMhAIKnEyZCAx0IhwOVYGnvwfERVImPSg/5wwWHtCIQNt6QtkQK0nkAEl9MiAEnhWBvTAszKgxh4ZUEOfZWVg74067Zl9hk65mUtFBjIDDg6PDASjSp0QGUhNNDAeMhAIKkMyVgYyQA0MycpAIKjEyZCBxEAjwuVYGfj2JyMqkDDpj70vYbD2hEIG2tIXyIBaTyADSuiRASXwrAzogWdlQI09MqCGPsvKwFO36LRn1qk65WYuFRloCPje+7cVqy+6qth88+XFgvmHFstWnFucdcbJxanLjyvOX7PvObjr1gY8lxYZaNgT9bMjA/XZNcqJDDTC1ygzKwON8DXKzMpAI3y1MyMDtdE1zphjZeA7f9K4WrUCHPiLtbK1PVOvZOCW2+4uLr36pil9csl5pw8m7nU/yMAkOV46Vnf4NM/HS8eaM6wbgZeO1SXXLB8vHWvGr0luXjrWhF6jvLx0zMH3/z7diGftzP/mvbWztjljb2TAiMDD92wY9seOnY8VF374+mLj+jXJ+oiVgWQoxxaIlYGxoZ5aECsDSuAni2VlQI89KwM67FkZ0OEupeZYGfjubTrt+dHlOuVmLrU3MhCyZUfk4MTTLh4iX3/FBcUxRy0pVq5eW8ybe9CU7T5m0v/Oty0e5AnZJiR59ux9ahjf5Bn8gW1CmYd6eXhkQAk9MqAEHhnQAz9ZMjKggx8Z0OGeSwb+5Xad9vzIyTrlZi61NzJgVgbMBN/HddGxqwqzbcheSZD/v/7G24stm64ZZJOtQR+67IbBv41AhMjAldfdWlx49imDGCIY8hmuSiADmYc6MqAGuKxgZECvS1gZ0GOPDOiwRwZ0uOeSgafv0GnPK0/SKTdzqb2RAeEok/ENG++cgtRsG3In/JJI5MDIg/3/ssowb+6cwcQ+RgbsgvcrDxnIPNSRATXAyEDr0LNNSLFLkAEd+MiADvdcMvC9qXO5sTXuFSeMrahxFtQrGXDBytX53U/sHVzh94mCpDcrBfY2IxEDsxIQIwNuGXNmzxquNrBNaJzDfmpZbBNSYs/KgBL4yWJZGdBjjwzosEcGdLjnkoFnPqvTnpe9W6fczKX2WgbMk4BkdcC3MmCzN2llpeBjn9g03N4TKgNm25GRCFYGMo/siPDIQASslEmRgZQ042IhA3G8UqZGBlLSDI+FDISzSp0yxw3Ez/5V6lqGxXvpT4Wl61iq3siArAJ84P0rBjcEm4+7b9++Z0DSyJX8o9+6aJjH3ABsP440Rgbs+w5kpeGBbY+wMtCCHwwyoNQJyIASeFYG9MBPlowM6OBHBnS4S6k5ZOD79+i05yXH7leu/XCYVStPGN4bqlPBeqX2RgbMlX0b0/HLlk55QpD7NKEp23helAO558B9PGmdpwktXnjYcIvSoE7cM1BvBCfIhQwkgFgnBDJQh1qaPKwMpOFYJwoyUIda8zzIQHOGdSPkkIHn/nfd2jTLd8B/mJLffVKlfX9ps4LGm7s3MjBerDVKQwZqQEuTBRlIwzE6CjIQjSxZBmQgGcroQMhANLIkGZCBJBhrBckhAz/461pVaZxp5jumhHAn/yGPsW9chwwBkIEMUGuFRAZqYUuRCRlIQbFGDGSgBrREWZCBRCBrhEEGakBLkAUZSACxZogcMvD8F2tWpmG2GW8fBnC3icsXsr1864Pbk77MtmGNg7IjA0GYxpAIGRgDZH8RyIASemRACfxksciAHntkQIc9MqDDSgwGlgAADspJREFUXUrNIQMvbNVpz8TSYblm+7n9AlmRgc989r4f3g+qU8voUpGBaGSZMiADmcBWh0UGqhllSYEMZMEaFBQZCMKUJREykAVrZVBkoBJRtgQ5ZCBbZcMDszIQzoqUoQSQgVBSydMhA8mRhgVEBsI45UiFDOSgGhYTGQjjlDoVMpCaaHi8aSoDAoB7BsKHASlDCCADIZSypEEGsmCtDooMVDPKlQIZyEW2Oi4yUM0oRwpkIAfVsJjTWAZ4mlDYECBVKAFkIJRU8nTIQHKkYQGRgTBOOVIhAzmohsVEBsI4pU6FDKQmGh5vGsuAQOA9A+FDgZRVBJCBKkLZvkcGsqEdHRgZUAI/WSwyoMceGdBhjwzocJdSp7kM6IFNVzI3EKdj2SwSMtCMX4PcyEADeE2yIgNN6DXLiww049ckNzLQhF79vMhAfXZNcyIDTQlmz48MZEccWAAyEAgqfTJkID3ToIjIQBCmLImQgSxYg4IiA0GYkidCBpIjDQ6IDASj0kqIDGiRd8tFBtR6AhlQQo8MKIGfLBYZ0GOPDOiwRwZ0uEupyIAe+8CSkYFAUNmTIQPZEZcVgAwooUcGlMAjA3rgJ0tGBnTwIwM63JEBPe4RJSMDEbCyJkUGsuIdFRwZUEKPDCiBRwb0wCMDauyRATX0rAzooQ8tGRkIJUU6CEAAAhCAAAQgAAEITDMCyMA061CaAwEIQAACEIAABCAAgVACyEAoKdJBAAIQgAAEIAABCEBgmhFABqZZh/ahOStXry3mzT2oWLf2nD40V6WNV153a/GZz95XbNl0jUr5FDr9CJy/5tpBo/jdTr++pUXdJ7Do2FXFJeedXpy6/LjuN4YWRBNABqKRtSfDLbfdXVx69U37VWjVyhOKC88+pT0VLalJWf3XX3FBccxRS0rr3wYZMK8ff/ieDVPqKQdU+bh/b2tnyATtri1bC5d5G2Vgx87HihNPu7hYvPCwYuP6NUOk996/rVh90VX7/b3tzKV+XT35mr6QNsyZPStIGtsgA+aY05VjpD2GzTHH/C2Ue5t+B3Lsfmj7o8MqhY5/rWO+OT7a48WM/c03X14smH9om/CW1sUdO5LQPeYjA53oymyVRAayoc0f2JzYujLxdInUrb/WicE9Mcu/3/Puo4fiZSbQe/Y+1RkZkBOATK7dlZY2y4BMgj7ywTOHwijjYfcTe4u5B8+eIgn5f4HNSpAT9FlnnNzpK3HyG77+xts7IwMyVuQj46VLq14yVuxjjbRBJqrvPWnZyAsnzUZo2tzSBvs3aibVIUKgdcwXxrt2PzkQGHOe7aoM2OPHtOH4ZUtZqUs7zDsbDRnobNcVRdVkWiZ6ckVjw8Y7B610ryTZV/d8Vwpyo6mqv301w74yY04MckXbfMZ9lcZM5GRlxpwkfH9zVz/sg6+ZcB+55PDB1Xn3indu/nJF/WOf2FR84P0rBlfWbak0dZOTt7mSZ5+03bFVtZqToi325OG2zfcOJv7ytws/fP1AZuSkbVYMzBU9U66pu09ytCYatgy49TKrHWZcV/2WU/CtE8OVAffqos22DSsDUj8Z5/Jfd8y6x0P3mGhf1R7nJCp08tnm42WZNPr+brdDOM+bO2d4DpM+Gedx0oxZKVfqISvuvv4oGxvu7yG0L+v8Fkfl8cmkWxf34oR77hr3OTY1A+KNJoAMdHiEVE2m5UBkC4D7Y7cPVFWxcmAaVaY9iTAHLXPyNgdeM3k1V2/srSM56mvHNCy/+a0nBn9+9asOLuT/5b+2IMgkz2zZMhM80w75TkQt5MpYjvYIt6Pe8qbBlWl3bJi6mbq6feWOrRz1c2PaJy8RAJGYT9+xZXB1VP5ry4DN3bTFjBd7Iqh1cpa2xcrAqN/yOPj7yuiSDEhd7//bfxhcCfWJiX08dI85rqz5Jlc5+8C9qu6W1fbjZZkIur8/V8wln/SXlrCbep//K78w2KIoxxC3zqPGhttuSbtr956xX40vG6/CdekRCwfnKPt45F6MkH9/Y9fjnV7FzPn7nA6xkYEO92LVPQO+q3Tmh++7IuO7WpYTj6/+ciXIHHjtKxH2Qcs9MZgD1zi3S5kD5zvftnhwkjATtSqpGjUBzMnaF9tcJZXv3JOU7wq6PT409pfaJ+EvfOmhwfYUs+1glBC6J2/7BC3t3PrgdpXtRbEyYEuj/XsY97ixy+uSDAgzEUi5H0mOGR+67IbhViG3Ha4M+K6ahm6PStU/5n4kE8+slpZdqTbH+jYcL0dN5s1xZcH8QwbHUt8VaG0ZMAIpqwMrT37XlHqOGhvuuUnS2lscU42NqjixMtCGVbyqNvF9WgLIQFqeY41WNfEctWRvrpa6FR7nVeqy+psDqFs3szTvnhg0ru7aJwD7wOlrk3sSH7VlZVwDSOppttpIme5JyycDdpu1ZUBu3HP7wF4Z8I0hM8kw40XkUevkXGdlwJWBNjxRqysyYPe5+Y3ZcutKoSsD7oWSqmNv7t+xGd8yJl4z75DBNr82Hy9DVgZ27Hx8v+2Kpk1tkAH7PGNLS9XYMMcp6SdbQHOPETt+rAy05WLDOBn1vSxkoMMjoOqENEoGYm78y4WorP5Vk/s2XOkqu/nTbZOkk3sCzOMU27Iy4D7Vw/TxKFFp08qA+xQPe2XAvTGx7MqpTKYf2PaI2o2k9lhwf4++ewa6IAPu76It9wyUXfwwFxi6sDLgHofNhM29Uu1LZ4ujxkrqqHsGzLbKUcf9NsiAcDVSI/d4mYsLVatGRjRlpUY+Gk/6i71ngJWBXLOe9sZFBtrbN5U1ayIDEtyVBTloHf3WRWN7OkXoPQPmyvV9f/Pw4EDqnhg0ThQxMmCeGONOUjWf2OPbEmZfHXXr5v67DSsD9g/EJwPmZG3Gmb39wPxtnCthdn3dK8/uBM3cAG3fQNxGGXC3Z9lXFN0nlmhOMHxXOm3mbn+Y8WHf32O/d2Oc9wyYG/19j9O176NyJ/xtOl6albCqpwmV3TOgcV+YPfk3F3Psm8zNb7PqfhJfnsqTe+IE7ng1dbIfzME9A4mhdywcMtCxDrOrW+eeAfuE4T49Y9zPra6SGTk4yWM6zcccfN2r2uOutzmx+R4L6bbJ7iOpp3xMPi0ZKCvXvjK38fbPTXmCh9Tbnky3WQbMSdw8bUqePiJPRLLr79s2Mo5DgT123Wfdu08ksa8+jlrlG0e97TLcLVj2vTr2dzLeZfJnjjlaMuCusthtcVfqzJPXfGNG62lCUl/fSp67tz70eDnOp/G4Y9Nth0/G7W2VZuXGPleNs/6+MeuKuts/vidNSbvlM86HXLjj3D6Xynfu07TcC1zuahpPExr3kXa85SED4+VNaRCAQAsIaD3VowVNpwoBBNqwjTKgmkFJNFZOgypGIghAoDUEkIHWdAUVgQAExkGg6p6UcdSBMtpHoOzKevtqGlcjZCCOF6kh0EcCyEAfe502QwACEIAABCAAAQhAYJIAMsAwgAAEIAABCEAAAhCAQE8JIAM97XiaDQEIQAACEIAABCAAAWSAMQABCEAAAhCAAAQgAIGeEkAGetrxNBsCEIAABCAAAQhAAALIAGMAAhCAAAQgAAEIQAACPSWADPS042k2BCAAAQhAAAIQgAAEkAHGAAQgAAEIQAACEIAABHpKABnoacfTbAhAAAIQgAAEIAABCCADjAEIQAACEIAABCAAAQj0lAAy0NOOp9kQgAAEIAABCEAAAhBABhgDEIAABCAAAQhAAAIQ6CkBZKCnHU+zIQABCEAAAhCAAAQggAwwBiAAAQhAAAIQgAAEINBTAshATzueZkMAAhCAAAQgAAEIQAAZYAxAAAIQgAAEIAABCECgpwSQgZ52PM2GAAQgAAEIQAACEIAAMsAYgAAEIAABCEAAAhCAQE8JIAM97XiaDQEIQAACEIAABCAAAWSAMQABCEAAAhCAAAQgAIGeEkAGetrxNBsCEIAABCAAAQhAAALIAGMAAhCAAAQgAAEIQAACPSWADPS042k2BCAAAQhAAAIQgAAEkAHGAAQgAAEIQAACEIAABHpKABnoacfTbAhAAAIQgAAEIAABCCADjAEIQAACEIAABCAAAQj0lAAy0NOOp9kQgAAEIAABCEAAAhBABhgDEIAABCAAAQhAAAIQ6CkBZKCnHU+zIQABCEAAAhCAAAQggAwwBiAAAQhAAAIQgAAEINBTAshATzueZkMAAhCAAAQgAAEIQAAZYAxAAAIQgAAEIAABCECgpwSQgZ52PM2GAAQgAAEIQAACEIAAMsAYgAAEIAABCEAAAhCAQE8JIAM97XiaDQEIQAACEIAABCAAAWSAMQABCEAAAhCAAAQgAIGeEkAGetrxNBsCEIAABCAAAQhAAALIAGMAAhCAAAQgAAEIQAACPSWADPS042k2BCAAAQhAAAIQgAAEkAHGAAQgAAEIQAACEIAABHpKABnoacfTbAhAAAIQgAAEIAABCCADjAEIQAACEIAABCAAAQj0lAAy0NOOp9kQgAAEIAABCEAAAhBABhgDEIAABCAAAQhAAAIQ6CkBZKCnHU+zIQABCEAAAhCAAAQggAwwBiAAAQhAAAIQgAAEINBTAshATzueZkMAAhCAAAQgAAEIQAAZYAxAAAIQgAAEIAABCECgpwSQgZ52PM2GAAQgAAEIQAACEIAAMsAYgAAEIAABCEAAAhCAQE8JIAM97XiaDQEIQAACEIAABCAAAWSAMQABCEAAAhCAAAQgAIGeEkAGetrxNBsCEIAABCAAAQhAAALIAGMAAhCAAAQgAAEIQAACPSWADPS042k2BCAAAQhAAAIQgAAEkAHGAAQgAAEIQAACEIAABHpKABnoacfTbAhAAAIQgAAEIAABCCADjAEIQAACEIAABCAAAQj0lAAy0NOOp9kQgAAEIAABCEAAAhBABhgDEIAABCAAAQhAAAIQ6CkBZKCnHU+zIQABCEAAAhCAAAQggAwwBiAAAQhAAAIQgAAEINBTAshATzueZkMAAhCAAAQgAAEIQAAZYAxAAAIQgAAEIAABCECgpwSQgZ52PM2GAAQgAAEIQAACEIDA/wfepZYg/NLc1gAAAABJRU5ErkJggg=="
},
"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
}