feat(analysis): añadir ratio p10/p50 consumo electrico como proxy de vivienda semi-vacia
Origen: usuario pidió comparar demanda invierno vs verano. API REE rota para geo_limit=baleares (devuelve 400 en todos los endpoints). Alternativa: analizar los percentiles de consumo electrico del Censo 2021 (tabla 59532) como proxy de heterogeneidad de uso. Logica: - p10 muy bajo en relacion a p50 (ratio <0.3) = hay casas con consumo muy bajo (posibles vacantes, segundas residencias estacionales, personas mayores) - p10/p50 alto (~0.6+) = distribucion mas homogenea = uso residencial estable Limitaciones documentadas en data/output/vivienda_vacia_analysis.md: - Es un snapshot del 2011, NO serie temporal - Ratio NO distingue invierno de verano, solo colas de bajo consumo - Para invierno vs verano real, hace falta REE funcionando o Govern Balear Outputs: - scripts/07_vivienda_vacia_analysis.py: nuevo script de analisis - data/output/vivienda_vacia_por_distrito.csv: 116 distritos con ratios + Airbnb - data/output/vivienda_vacia_analysis.md: reporte markdown con top-10, correlacion, etc - web/public/vivienda_vacia_*: copies para acceso publico - ratio_p10_p50_consumo: nueva variable en dataset y mapa (color naranja-rojo) Invertido: naranja = mucha cola de bajo consumo (potencial vacio), verde = estable
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Estadisticas descriptivas - Cases Tancades
|
||||
|
||||
Generado: 2026-07-15 11:37
|
||||
Generado: 2026-07-15 12:24
|
||||
|
||||
|
||||
## Cobertura geografica
|
||||
|
||||
+675
-675
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,70 @@
|
||||
# Analisis vivienda semi-vacia Balears (Censo 2021)
|
||||
**Fuente**: INE Censo 2021 - Tabla 59532 (percentiles consumo electrico por distrito censal) y Tabla 59531 (viviendas totales por municipio).
|
||||
**Limitacion importante**: El Censo 2021 da un snapshot anual, NO serie temporal. Los percentiles no distinguen invierno vs verano. Se usan como PROXY de la heterogeneidad de uso:
|
||||
- `p10` bajo: hay casas que consumen muy poco. Podrian ser vacias, segunda residencia estival, o mayores que apenas usan luz.
|
||||
- `p50` (mediana): el hogar tipico del distrito.
|
||||
- `ratio_p10_p50` bajo (<0.4): cola izquierda larga = mas casas con consumo muy bajo = potencial vivienda semi-vacia.
|
||||
- `ratio_p10_p50` alto (~0.7+): distribucion normal = la mayoria de casas se parecen.
|
||||
|
||||
## Metodologia
|
||||
Para cada distrito censal:
|
||||
1. Se extrae p10/p25/p50/p75/p90 del consumo anual de electricidad (kWh)
|
||||
2. Se calcula `ratio_p10_p50 = p10 / p50`. Bajo = distribucion asimetrica con cola de bajo consumo
|
||||
3. Se cruza con listings de Airbnb del Inside Airbnb (junio 2026) por distrito
|
||||
4. Se cruza con viviendas totales del municipio (Censo 2021) para normalizar
|
||||
|
||||
## Resultados globales
|
||||
- **Distritos analizados**: 116
|
||||
- **ratio p10/p50 mediana**: 0.289 (Q1: 0.246, Q3: 0.336)
|
||||
- **Distritos con ratio < 0.4** (posible concentracion de vivienda semi-vacia): **103 de 116 (89%)**
|
||||
- **Correlacion airbnb/1000viv vs ratio p10/p50**: 0.131
|
||||
> Correlacion debil: no hay patron claro entre Airbnb y vacio residencial.
|
||||
|
||||
## Top 10 distritos con MENOR ratio p10/p50 (mas cola de bajo consumo)
|
||||
Estos distritos tienen el percentil 10 mas bajo en relacion a la mediana. Indica que hay un grupo de casas con consumo electrico muy bajo.
|
||||
|
||||
| Distrito | p10 (kWh) | p50 (kWh) | ratio p10/p50 | Listings Airbnb | Airbnb/1000 viv |
|
||||
|---|---:|---:|---:|---:|---:|
|
||||
| 0704501 Puigpunyent distrito 01 | 111 | 3,615 | 0.03 | 39 | 30.6 |
|
||||
| 0705405 SantaEulà riadesRiu distrito 05 | 119 | 3,533 | 0.03 | 0 | 0.0 |
|
||||
| 0702403 Formentera distrito 03 | 574 | 3,038 | 0.19 | 0 | 0.0 |
|
||||
| 0790201 MigjornGran(Es) distrito 01 | 535 | 2,796 | 0.19 | 45 | 38.1 |
|
||||
| 0703307 Manacor distrito 07 | 493 | 2,424 | 0.20 | 149 | 5.2 |
|
||||
| 0705102 SantLlorençdesCardassar distrito 02 | 525 | 2,538 | 0.21 | 165 | 25.3 |
|
||||
| 0705403 SantaEulà riadesRiu distrito 03 | 1,006 | 4,826 | 0.21 | 0 | 0.0 |
|
||||
| 0701106 Calvià distrito 06 | 542 | 2,569 | 0.21 | 44 | 1.2 |
|
||||
| 0702402 Formentera distrito 02 | 475 | 2,185 | 0.22 | 0 | 0.0 |
|
||||
| 0700503 Andratx distrito 03 | 469 | 2,146 | 0.22 | 32 | 2.7 |
|
||||
|
||||
## Top 10 distritos con MAS presion Airbnb (per capita)
|
||||
| Distrito | Listings Airbnb | Viviendas | Airbnb/1000 viv | ratio p10/p50 |
|
||||
|---|---:|---:|---:|---:|
|
||||
| 0700901 Búger distrito 01 | 141 | 888 | 158.8 | 0.28 |
|
||||
| 0703701 Mercadal(Es) distrito 01 | 690 | 7,208 | 95.7 | 2.36 |
|
||||
| 0704203 Pollença distrito 03 | 1239 | 13,772 | 90.0 | 0.23 |
|
||||
| 0705502 SantaMargalida distrito 02 | 594 | 8,414 | 70.6 | 2.41 |
|
||||
| 0706301 Valldemossa distrito 01 | 103 | 1,483 | 69.5 | 0.24 |
|
||||
| 0705801 Selva distrito 01 | 199 | 2,990 | 66.6 | 0.23 |
|
||||
| 0701401 Capdepera distrito 01 | 518 | 9,119 | 56.8 | 0.22 |
|
||||
| 0703901 Muro distrito 01 | 276 | 5,092 | 54.2 | 0.25 |
|
||||
| 0701201 Campanet distrito 01 | 97 | 1,911 | 50.8 | 2.62 |
|
||||
| 0705901 Salines(Ses) distrito 01 | 241 | 4,922 | 49.0 | 0.29 |
|
||||
|
||||
## Lectura del hallazgo
|
||||
|
||||
**No podemos demostrar aumento de demanda invierno vs verano** con estos datos (es un snapshot del ano 2021, no serie temporal).
|
||||
|
||||
**Lo que SI podemos hacer**: usar `ratio p10_p50` como **proxy de heterogeneidad de uso**. La hipotesis es que:
|
||||
- En zonas donde la mayoria de casas se usan como segunda residencia estival, la cola izquierda del consumo electrico es mas larga (ratio bajo).
|
||||
- En zonas de uso residencial estable, la distribucion es mas homogenea (ratio alto).
|
||||
|
||||
Para comparar **realmente invierno vs verano** haria falta:
|
||||
- Serie temporal de REE (API rota para geo_limit=baleares)
|
||||
- O datos del Govern Balear / CNMC con desglose mensual
|
||||
- O microdatos del Censo 2021 (no accesibles publicamente con granularidad mensual)
|
||||
|
||||
## Recomendaciones para profundizar
|
||||
|
||||
1. **Solicitar datos** a la Conselleria de Transicio Energetica del Govern Balear
|
||||
2. **Esperar a que REE arregle** la API para `geo_limit=baleares` (reporte en su portal)
|
||||
3. **Cruzar con datos de agua** (Conselleria de Medi Ambient): una vivienda vacia consume menos agua, mismo patron
|
||||
@@ -0,0 +1,117 @@
|
||||
CDIS,consumo_p10_kwh,consumo_p25_kwh,consumo_p50_kwh,consumo_p75_kwh,consumo_p90_kwh,ratio_p10_p50,ratio_p25_p50,ratio_p90_p50,rango_p10_p90,gap_bajo_consumo_pct,airbnb_listings,airbnb_entire_homes,CMUN,NMUN,viviendas_totales,airbnb_per_1000_viv
|
||||
0700101,1016.0,2021.0,3507.0,5301.0,7614.0,0.28970630168234957,0.5762760193897919,2.1710863986313087,6598.0,71.02936983176504,67.0,64.0,07001,Alaró,3246,20.640788662969808
|
||||
0700102,920.0,1982.0,3181.0,5084.0,7858.0,0.28921722728701665,0.6230745048726816,2.470292360892801,6938.0,71.07827727129833,2.0,2.0,07001,Alaró,3246,0.6161429451632779
|
||||
0700301,1103.0,21.0,3359.0,4882.0,6477.0,0.3283715391485561,0.006251860672819291,1.9282524560881216,5374.0,67.1628460851444,107.0,98.0,07003,Alcúdia,12711,8.417905750924396
|
||||
0700302,823.0,1604.0,3177.0,5348.0,822.0,0.25904941768964435,0.5048788164935474,0.2587346553352219,-1.0,74.09505823103557,503.0,503.0,07003,Alcúdia,12711,39.572024230981036
|
||||
0700303,827.0,1755.0,3085.0,4758.0,659.0,0.2680713128038898,0.5688816855753647,0.21361426256077795,-168.0,73.19286871961101,160.0,156.0,07003,Alcúdia,12711,12.587522618204705
|
||||
0700304,533.0,920.0,1925.0,3611.0,5387.0,0.2768831168831169,0.4779220779220779,2.7984415584415583,4854.0,72.3116883116883,579.0,567.0,07003,Alcúdia,12711,45.55109747462827
|
||||
0700501,1083.0,1988.0,3226.0,4768.0,6785.0,0.33570985740855547,0.6162430254184749,2.103223806571606,5702.0,66.42901425914445,48.0,45.0,07005,Andratx,11753,4.084063643325108
|
||||
0700502,652.0,128.0,2666.0,5312.0,9293.0,0.24456114028507125,0.04801200300075019,3.485746436609152,8641.0,75.54388597149287,100.0,89.0,07005,Andratx,11753,8.508465923593976
|
||||
0700503,469.0,912.0,2146.0,4492.0,7045.0,0.21854613233923578,0.4249767008387698,3.282851817334576,6576.0,78.14538676607641,32.0,32.0,07005,Andratx,11753,2.7227090955500723
|
||||
0700901,972.0,2077.0,3515.0,5471.0,7776.0,0.27652916073968703,0.590896159317212,2.2122332859174962,6804.0,72.3470839260313,141.0,140.0,07009,Búger,888,158.78378378378378
|
||||
0701001,1383.0,2481.0,4054.0,6151.0,867.0,0.34114454859398124,0.6119881598421312,0.21386285150468673,-516.0,65.88554514060188,44.0,43.0,07010,Bunyola,3671,11.985834922364479
|
||||
0701002,1001.0,187.0,3252.0,5338.0,7343.0,0.30781057810578105,0.057503075030750306,2.2579950799507995,6342.0,69.2189421894219,22.0,22.0,07010,Bunyola,3671,5.992917461182239
|
||||
0701101,1215.0,2327.0,3962.0,6335.0,9334.0,0.306663301362948,0.5873296314992428,2.3558808682483594,8119.0,69.3336698637052,30.0,25.0,07011,Calvià,36492,0.8220979940808945
|
||||
0701102,811.0,1489.0,2851.0,5062.0,8726.0,0.284461592423711,0.5222728867064188,3.0606804629954403,7915.0,71.55384075762889,78.0,76.0,07011,Calvià,36492,2.1374547846103256
|
||||
0701103,715.0,1402.0,2592.0,4134.0,6249.0,0.27584876543209874,0.5408950617283951,2.4108796296296298,5534.0,72.41512345679013,90.0,83.0,07011,Calvià,36492,2.4662939822426835
|
||||
0701104,1281.0,2178.0,3419.0,5039.0,7211.0,0.37467095642000586,0.637028370868675,2.1090962269669493,5930.0,62.532904357999406,35.0,35.0,07011,Calvià,36492,0.9591143264277102
|
||||
0701105,636.0,1311.0,2618.0,4741.0,7997.0,0.24293353705118412,0.5007639419404125,3.0546218487394956,7361.0,75.70664629488158,84.0,78.0,07011,Calvià,36492,2.301874383426504
|
||||
0701106,542.0,1128.0,2569.0,424.0,6523.0,0.21097703386531724,0.43908135461268977,2.5391202802646946,5981.0,78.90229661346828,44.0,28.0,07011,Calvià,36492,1.2057437246519787
|
||||
0701201,955.0,2072.0,365.0,5564.0,7589.0,2.6164383561643834,5.676712328767123,20.791780821917808,6634.0,-161.64383561643834,97.0,93.0,07012,Campanet,1911,50.758765044479325
|
||||
0701202,854.0,1763.0,3357.0,5164.0,7544.0,0.25439380399165923,0.5251712838844206,2.247244563598451,6690.0,74.56061960083407,48.0,48.0,07012,Campanet,1911,25.11773940345369
|
||||
0701401,576.0,1246.0,2579.0,4384.0,6736.0,0.22334238076773943,0.4831329972857697,2.611865063978286,6160.0,77.66576192322606,518.0,473.0,07014,Capdepera,9119,56.80447417479987
|
||||
0701501,559.0,1202.0,2525.0,4059.0,6005.0,0.2213861386138614,0.476039603960396,2.378217821782178,5446.0,77.86138613861387,553.0,522.0,07015,Ciutadella de Menorca,17887,30.916307933135798
|
||||
0701502,823.0,1729.0,2987.0,4292.0,5772.0,0.2755272849012387,0.5788416471375962,1.9323736190157348,4949.0,72.44727150987613,76.0,74.0,07015,Ciutadella de Menorca,17887,4.248895846145245
|
||||
0701503,863.0,1686.0,2976.0,4399.0,5957.0,0.28998655913978494,0.5665322580645161,2.0016801075268815,5094.0,71.0013440860215,31.0,16.0,07015,Ciutadella de Menorca,17887,1.7331022530329288
|
||||
0701504,539.0,1143.0,2445.0,4204.0,6227.0,0.22044989775051124,0.46748466257668714,2.5468302658486706,5688.0,77.95501022494888,726.0,720.0,07015,Ciutadella de Menorca,17887,40.58813663554537
|
||||
0701601,991.0,2122.0,3426.0,5043.0,6856.0,0.28925861062463515,0.6193812025685931,2.0011675423234094,5865.0,71.07413893753649,16.0,16.0,07016,Consell,2117,7.557864903164856
|
||||
0701701,925.0,1757.0,3132.0,5002.0,7282.0,0.295338441890166,0.5609833971902938,2.3250319284802043,6357.0,70.4661558109834,60.0,58.0,07017,Costitx,1306,45.94180704441042
|
||||
0702001,1128.0,2249.0,3708.0,5597.0,812.0,0.3042071197411003,0.6065264293419633,0.21898597626752966,-316.0,69.57928802588998,55.0,40.0,07020,Esporles,2553,21.54328241284763
|
||||
0702201,1053.0,1972.0,3222.0,4706.0,6549.0,0.3268156424581006,0.612042209807573,2.032588454376164,5496.0,67.31843575418995,83.0,80.0,07022,Felanitx,13611,6.098008963338476
|
||||
0702202,794.0,1637.0,2907.0,4462.0,6432.0,0.2731338149294806,0.56312349501204,2.212590299277606,5638.0,72.68661850705193,41.0,41.0,07022,Felanitx,13611,3.012269487914187
|
||||
0702203,1137.0,2035.0,3283.0,4612.0,6524.0,0.3463295766067621,0.6198598842522084,1.9872068230277184,5387.0,65.36704233932379,76.0,69.0,07022,Felanitx,13611,5.583719050767762
|
||||
0702204,593.0,1184.0,2634.0,4523.0,6902.0,0.22513287775246774,0.4495064540622627,2.6203492786636295,6309.0,77.48671222475323,489.0,478.0,07022,Felanitx,13611,35.92682389243994
|
||||
0702301,913.0,1896.0,321.0,4714.0,6465.0,2.844236760124611,5.906542056074766,20.14018691588785,5552.0,-184.42367601246107,79.0,67.0,07023,Ferreries,2369,33.34740396791895
|
||||
0702401,783.0,1595.0,3464.0,6073.0,9376.0,0.2260392609699769,0.46045034642032334,2.7066974595842956,8593.0,77.39607390300232,0.0,0.0,07024,Formentera,6969,0.0
|
||||
0702402,475.0,871.0,2185.0,4749.0,8603.0,0.21739130434782608,0.39862700228832953,3.937299771167048,8128.0,78.26086956521739,0.0,0.0,07024,Formentera,6969,0.0
|
||||
0702403,574.0,1112.0,3038.0,5967.0,10021.0,0.1889400921658986,0.36603028308097435,3.2985516787360107,9447.0,81.10599078341014,0.0,0.0,07024,Formentera,6969,0.0
|
||||
0702602,640.0,1202.0,2085.0,3447.0,5359.0,0.3069544364508393,0.5764988009592326,2.570263788968825,4719.0,69.30455635491607,0.0,0.0,07026,Eivissa,23938,0.0
|
||||
0702603,950.0,1785.0,293.0,4426.0,63.0,3.242320819112628,6.092150170648464,0.2150170648464164,-887.0,-224.23208191126278,0.0,0.0,07026,Eivissa,23938,0.0
|
||||
0702604,1118.0,1863.0,2941.0,4336.0,5984.0,0.3801428085685141,0.6334580074804488,2.0346820809248554,4866.0,61.985719143148586,0.0,0.0,07026,Eivissa,23938,0.0
|
||||
0702701,1105.0,2021.0,3209.0,4648.0,6246.0,0.3443440324088501,0.6297912122156435,1.946400747896541,5141.0,65.565596759115,120.0,116.0,07027,Inca,15863,7.564773371997731
|
||||
0702702,1231.0,2162.0,3343.0,4732.0,6294.0,0.36823212683218665,0.6467244989530362,1.8827400538438528,5063.0,63.176787316781336,70.0,69.0,07027,Inca,15863,4.412784466998676
|
||||
0702703,1185.0,2104.0,3342.0,4755.0,6273.0,0.35457809694793535,0.6295631358467983,1.877019748653501,5088.0,64.54219030520647,35.0,30.0,07027,Inca,15863,2.206392233499338
|
||||
0702801,896.0,1919.0,3305.0,5159.0,7138.0,0.27110438729198183,0.5806354009077156,2.1597579425113462,6242.0,72.88956127080182,41.0,41.0,07028,Lloret de Vistalegre,1093,37.51143641354071
|
||||
0702901,1158.0,2018.0,3216.0,4823.0,6333.0,0.36007462686567165,0.6274875621890548,1.9692164179104477,5175.0,63.99253731343284,14.0,12.0,07029,Lloseta,3035,4.612850082372323
|
||||
0702902,1049.0,2087.0,3327.0,4887.0,6692.0,0.3152990682296363,0.6272918545235948,2.0114217012323414,5643.0,68.47009317703636,36.0,34.0,07029,Lloseta,3035,11.86161449752883
|
||||
0703001,812.0,1791.0,3406.0,5249.0,7272.0,0.2384028185554903,0.5258367586611862,2.1350557839107456,6460.0,76.15971814445098,55.0,55.0,07030,Llubí,1685,32.640949554896146
|
||||
0703002,853.0,1836.0,3377.0,5169.0,7599.0,0.25259105715131774,0.5436778205507847,2.25022209061297,6746.0,74.74089428486823,43.0,37.0,07030,Llubí,1685,25.519287833827892
|
||||
0703101,900.0,1827.0,3164.0,4781.0,6713.0,0.28445006321112515,0.577433628318584,2.1216814159292037,5813.0,71.55499367888748,81.0,73.0,07031,Llucmajor,23312,3.4746053534660257
|
||||
0703102,1147.0,1963.0,2998.0,4274.0,6055.0,0.38258839226150765,0.6547698465643762,2.0196797865243497,4908.0,61.74116077384924,2.0,2.0,07031,Llucmajor,23312,0.08579272477693892
|
||||
0703103,730.0,1419.0,2587.0,4074.0,5797.0,0.28218013142636256,0.5485117897178199,2.240819482025512,5067.0,71.78198685736375,67.0,55.0,07031,Llucmajor,23312,2.8740562800274536
|
||||
0703104,931.0,1877.0,3181.0,4956.0,7202.0,0.2926752593524049,0.5900660169757938,2.264067903175102,6271.0,70.73247406475951,326.0,310.0,07031,Llucmajor,23312,13.984214138641043
|
||||
0703105,1235.0,1864.0,2979.0,4096.0,5361.0,0.414568647197046,0.625713326619671,1.799597180261833,4126.0,58.5431352802954,2.0,1.0,07031,Llucmajor,23312,0.08579272477693892
|
||||
0703201,802.0,1499.0,2643.0,4183.0,6057.0,0.3034430571320469,0.5671585319712448,2.2917139614074915,5255.0,69.65569428679531,18.0,13.0,07032,Maó-Mahón,15173,1.1863178013576747
|
||||
0703202,936.0,1692.0,2689.0,4006.0,5456.0,0.34808478988471553,0.6292301970992934,2.0290070658237265,4520.0,65.19152101152845,4.0,4.0,07032,Maó-Mahón,15173,0.2636261780794833
|
||||
0703203,1132.0,1949.0,3069.0,4582.0,6397.0,0.36884978820462694,0.6350602802215706,2.084392310198762,5265.0,63.11502117953731,63.0,54.0,07032,Maó-Mahón,15173,4.152112304751862
|
||||
0703204,757.0,1479.0,2673.0,4138.0,5781.0,0.2832023943135054,0.55331088664422,2.1627384960718294,5024.0,71.67976056864947,2.0,2.0,07032,Maó-Mahón,15173,0.13181308903974165
|
||||
0703205,647.0,12.0,258.0,4829.0,7813.0,2.507751937984496,0.046511627906976744,30.282945736434108,7166.0,-150.7751937984496,61.0,61.0,07032,Maó-Mahón,15173,4.02029921571212
|
||||
0703301,856.0,1623.0,2788.0,4311.0,6374.0,0.30703012912482064,0.5821377331420373,2.2862266857962696,5518.0,69.29698708751793,122.0,118.0,07033,Manacor,28571,4.270064050960765
|
||||
0703302,829.0,1669.0,2857.0,4436.0,638.0,0.2901645082254113,0.5841792089604481,0.2233111655582779,-191.0,70.98354917745887,94.0,90.0,07033,Manacor,28571,3.290049350740261
|
||||
0703303,932.0,1819.0,3104.0,4692.0,6583.0,0.3002577319587629,0.5860180412371134,2.120811855670103,5651.0,69.9742268041237,120.0,111.0,07033,Manacor,28571,4.200063000945015
|
||||
0703304,1041.0,1744.0,2849.0,4347.0,604.0,0.3653913653913654,0.6121446121446121,0.21200421200421202,-437.0,63.46086346086346,47.0,39.0,07033,Manacor,28571,1.6450246753701305
|
||||
0703305,608.0,1217.0,2499.0,4202.0,6221.0,0.24329731892757103,0.48699479791916767,2.4893957583033215,5613.0,75.6702681072429,225.0,213.0,07033,Manacor,28571,7.875118126771903
|
||||
0703306,500.0,956.0,2036.0,3764.0,5554.0,0.2455795677799607,0.46954813359528486,2.7278978388998034,5054.0,75.44204322200393,40.0,37.0,07033,Manacor,28571,1.4000210003150046
|
||||
0703307,493.0,1023.0,2424.0,4616.0,7388.0,0.2033828382838284,0.422029702970297,3.047854785478548,6895.0,79.66171617161716,149.0,146.0,07033,Manacor,28571,5.215078226173392
|
||||
0703401,1023.0,1919.0,3331.0,5151.0,6972.0,0.30711498048634045,0.5761032722906034,2.0930651456019214,5949.0,69.28850195136596,41.0,41.0,07034,Mancor de la Vall,919,44.613710554951034
|
||||
0703601,1459.0,2505.0,3863.0,5755.0,8036.0,0.3776857364742428,0.6484597463111571,2.0802485115195446,6577.0,62.231426352575724,53.0,50.0,07036,Marratxí,15048,3.522062732589048
|
||||
0703602,1542.0,2506.0,3714.0,5279.0,7282.0,0.41518578352180935,0.674744211093161,1.9606892837910608,5740.0,58.48142164781906,40.0,40.0,07036,Marratxí,15048,2.658160552897395
|
||||
0703701,392.0,681.0,166.0,3477.0,5568.0,2.36144578313253,4.102409638554217,33.54216867469879,5176.0,-136.14457831325302,690.0,677.0,07037,"Mercadal, Es",7208,95.72697003329634
|
||||
0703801,722.0,1766.0,3135.0,4827.0,6971.0,0.23030303030303031,0.563317384370016,2.223604465709729,6249.0,76.96969696969697,1.0,1.0,07038,Montuïri,2197,0.4551661356395084
|
||||
0703802,742.0,1508.0,3023.0,4985.0,7441.0,0.24545153820707907,0.4988422097254383,2.4614621237181606,6699.0,75.45484617929209,43.0,35.0,07038,Montuïri,2197,19.572143832498863
|
||||
0703901,712.0,1384.0,2826.0,4677.0,6841.0,0.2519462137296532,0.4897381457891012,2.420736022646851,6129.0,74.80537862703468,276.0,272.0,07039,Muro,5092,54.20267085624509
|
||||
0703902,874.0,1778.0,3075.0,4736.0,6558.0,0.2842276422764228,0.5782113821138212,2.1326829268292684,5684.0,71.57723577235772,60.0,60.0,07039,Muro,5092,11.783189316575019
|
||||
0704001,796.0,1428.0,2351.0,3722.0,5717.0,0.33857932794555506,0.6074011059123777,2.431731178222033,4921.0,66.14206720544449,269.0,230.0,07040,Palma,186482,1.4424984717023628
|
||||
0704002,1001.0,1636.0,2567.0,3834.0,5528.0,0.3899493572263342,0.6373198285936892,2.153486560186989,4527.0,61.005064277366586,278.0,233.0,07040,Palma,186482,1.4907605023541146
|
||||
0704003,1058.0,168.0,2576.0,3786.0,5338.0,0.4107142857142857,0.06521739130434782,2.0722049689440993,4280.0,58.92857142857143,77.0,70.0,07040,Palma,186482,0.4129084844649886
|
||||
0704004,1039.0,1681.0,2595.0,3808.0,5281.0,0.4003853564547206,0.6477842003853564,2.0350674373795763,4242.0,59.96146435452794,149.0,119.0,07040,Palma,186482,0.7990047296790038
|
||||
0704005,882.0,1582.0,2608.0,4012.0,5785.0,0.33819018404907975,0.6065950920245399,2.2181748466257667,4903.0,66.18098159509202,146.0,125.0,07040,Palma,186482,0.7829173861284199
|
||||
0704101,849.0,1476.0,2962.0,4724.0,6919.0,0.28663065496286294,0.49831195138419987,2.335921674544227,6070.0,71.3369345037137,89.0,83.0,07041,Petra,2118,42.020774315391876
|
||||
0704102,871.0,1786.0,3124.0,5094.0,7537.0,0.278809218950064,0.5717029449423816,2.4126120358514727,6666.0,72.1190781049936,81.0,79.0,07041,Petra,2118,38.243626062322946
|
||||
0704201,999.0,2011.0,3456.0,532.0,7672.0,0.2890625,0.5818865740740741,2.2199074074074074,6673.0,71.09375,217.0,213.0,07042,Pollença,13772,15.756607609642751
|
||||
0704202,819.0,1778.0,3356.0,5307.0,7727.0,0.24404052443384983,0.5297973778307509,2.3024433849821215,6908.0,75.59594755661502,507.0,500.0,07042,Pollença,13772,36.8138251524833
|
||||
0704203,622.0,1274.0,2684.0,4686.0,6858.0,0.23174366616989567,0.47466467958271236,2.555141579731744,6236.0,76.82563338301043,1239.0,1232.0,07042,Pollença,13772,89.96514667441186
|
||||
0704204,1029.0,217.0,369.0,5392.0,7863.0,2.7886178861788617,0.5880758807588076,21.308943089430894,6834.0,-178.86178861788616,290.0,281.0,07042,Pollença,13772,21.057217542840547
|
||||
0704401,928.0,2035.0,3502.0,5166.0,6988.0,0.26499143346659054,0.5810965162764135,1.9954311821816104,6060.0,73.50085665334095,7.0,7.0,07044,"Pobla, Sa",6504,1.076260762607626
|
||||
0704402,904.0,1825.0,3337.0,5086.0,6773.0,0.2709020077914294,0.5468984117470782,2.0296673658975126,5869.0,72.90979922085705,45.0,45.0,07044,"Pobla, Sa",6504,6.918819188191882
|
||||
0704403,1026.0,1981.0,3457.0,5255.0,7108.0,0.2967891235175007,0.5730402082730691,2.0561180214058434,6082.0,70.32108764824994,46.0,46.0,07044,"Pobla, Sa",6504,7.072570725707257
|
||||
0704404,1048.0,2045.0,3428.0,5202.0,7289.0,0.3057176196032672,0.5965577596266044,2.1263127187864646,6241.0,69.42823803967329,137.0,137.0,07044,"Pobla, Sa",6504,21.063960639606396
|
||||
0704501,111.0,2184.0,3615.0,5634.0,8236.0,0.030705394190871368,0.604149377593361,2.2782849239280774,8125.0,96.92946058091286,39.0,33.0,07045,Puigpunyent,1275,30.58823529411765
|
||||
0704901,706.0,1691.0,3186.0,5142.0,7625.0,0.22159447583176398,0.5307595731324545,2.393283113622097,6919.0,77.8405524168236,10.0,10.0,07049,Sant Joan,1724,5.800464037122969
|
||||
0704902,741.0,1634.0,2938.0,4686.0,6997.0,0.252212389380531,0.5561606535057863,2.381552076242342,6256.0,74.7787610619469,30.0,30.0,07049,Sant Joan,1724,17.40139211136891
|
||||
0705001,704.0,178.0,379.0,7108.0,11306.0,1.8575197889182058,0.46965699208443273,29.8311345646438,10602.0,-85.75197889182058,0.0,0.0,07050,Sant Joan de Labritja,4366,0.0
|
||||
0705101,848.0,1858.0,3488.0,5602.0,7938.0,0.24311926605504589,0.5326834862385321,2.275802752293578,7090.0,75.68807339449542,117.0,104.0,07051,Sant Llorenç des Cardassar,6529,17.920049012099863
|
||||
0705102,525.0,1098.0,2538.0,4264.0,6367.0,0.20685579196217493,0.4326241134751773,2.508668242710796,5842.0,79.3144208037825,165.0,161.0,07051,Sant Llorenç des Cardassar,6529,25.271863991422883
|
||||
0705301,987.0,1981.0,3485.0,5432.0,7858.0,0.2832137733142037,0.5684361549497848,2.25480631276901,6871.0,71.67862266857964,11.0,11.0,07053,Santa Eugènia,1098,10.018214936247723
|
||||
0705401,843.0,1849.0,3275.0,5177.0,8093.0,0.25740458015267176,0.5645801526717558,2.471145038167939,7250.0,74.25954198473282,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705402,644.0,139.0,2883.0,5187.0,8679.0,0.22337842525147417,0.04821366631980576,3.010405827263267,8035.0,77.66215747485259,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705403,1006.0,2625.0,4826.0,8112.0,12171.0,0.20845420638209697,0.5439287194363862,2.521964359718193,11165.0,79.1545793617903,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705404,1081.0,2137.0,3598.0,5984.0,946.0,0.30044469149527514,0.593941078376876,0.26292384658143414,-135.0,69.95553085047248,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705405,119.0,222.0,3533.0,535.0,7924.0,0.033682422870082086,0.06283611661477498,2.242853099348995,7805.0,96.6317577129918,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705501,756.0,1653.0,3008.0,4898.0,6812.0,0.25132978723404253,0.5495345744680851,2.264627659574468,6056.0,74.86702127659575,54.0,47.0,07055,Santa Margalida,8414,6.417874970287616
|
||||
0705502,593.0,1146.0,246.0,4239.0,6256.0,2.410569105691057,4.658536585365853,25.43089430894309,5663.0,-141.0569105691057,594.0,585.0,07055,Santa Margalida,8414,70.59662467316377
|
||||
0705601,1172.0,2157.0,361.0,5177.0,6814.0,3.2465373961218837,5.975069252077562,18.87534626038781,5642.0,-224.65373961218836,21.0,15.0,07056,Santa María del Camí,3644,5.762897914379802
|
||||
0705602,1132.0,2242.0,3541.0,5195.0,7381.0,0.31968370516803163,0.6331544761366845,2.0844394238915562,6249.0,68.03162948319684,27.0,21.0,07056,Santa María del Camí,3644,7.4094401756311745
|
||||
0705801,886.0,2108.0,3787.0,5545.0,7829.0,0.23395827832057037,0.5566411407446528,2.0673356218642724,6943.0,76.60417216794296,199.0,185.0,07058,Selva,2990,66.5551839464883
|
||||
0705802,1057.0,2071.0,3344.0,4986.0,7207.0,0.3160885167464115,0.6193181818181818,2.1552033492822966,6150.0,68.39114832535886,61.0,47.0,07058,Selva,2990,20.401337792642142
|
||||
0705901,497.0,819.0,1722.0,3719.0,628.0,0.2886178861788618,0.47560975609756095,0.36469221835075494,131.0,71.13821138211382,241.0,233.0,07059,"Salines, Ses",4922,48.9638358390898
|
||||
0706001,996.0,1855.0,3116.0,4988.0,74.0,0.3196405648267009,0.5953145057766367,0.02374839537869063,-922.0,68.03594351732991,44.0,40.0,07060,Sineu,2727,16.134946828016137
|
||||
0706002,950.0,1885.0,3191.0,4919.0,6645.0,0.2977123158884362,0.5907239109996866,2.082419304293325,5695.0,70.22876841115637,41.0,41.0,07060,Sineu,2727,15.034836817015035
|
||||
0706101,1041.0,1957.0,3405.0,5065.0,7255.0,0.30572687224669604,0.5747430249632893,2.130690161527166,6214.0,69.42731277533039,61.0,53.0,07061,Sóller,8124,7.508616445100936
|
||||
0706102,893.0,1937.0,3454.0,533.0,7608.0,0.25854082223508973,0.560799073537927,2.202663578459757,6715.0,74.14591777649102,149.0,124.0,07061,Sóller,8124,18.340718857705564
|
||||
0706103,648.0,1346.0,2643.0,4654.0,7615.0,0.24517593643586832,0.5092697692016648,2.8811956110480517,6967.0,75.48240635641316,231.0,227.0,07061,Sóller,8124,28.43426883308715
|
||||
0706301,819.0,1838.0,3435.0,5546.0,8355.0,0.23842794759825328,0.535080058224163,2.432314410480349,7536.0,76.15720524017468,103.0,94.0,07063,Valldemossa,1483,69.45380984490897
|
||||
0706401,748.0,1573.0,2866.0,4401.0,6385.0,0.26099092812281927,0.5488485694347522,2.2278436845778087,5637.0,73.90090718771806,47.0,32.0,07064,"Castell, Es",4426,10.619069136918212
|
||||
0706501,961.0,1919.0,3382.0,5086.0,6873.0,0.28415138971023063,0.5674157303370787,2.0322294500295683,5912.0,71.58486102897695,7.0,7.0,07065,Vilafranca de Bonany,1707,4.100761570005858
|
||||
0706502,1119.0,1995.0,3599.0,5348.0,7429.0,0.31091969991664353,0.5543206446235065,2.0641844956932482,6310.0,68.90803000833566,33.0,33.0,07065,Vilafranca de Bonany,1707,19.332161687170473
|
||||
0790201,535.0,1197.0,2796.0,4526.0,6523.0,0.1913447782546495,0.4281115879828326,2.332975679542203,5988.0,80.86552217453506,45.0,41.0,07902,"Migjorn Gran, Es",1180,38.13559322033898
|
||||
|
@@ -291,6 +291,15 @@ def main() -> None:
|
||||
if col in gdf.columns:
|
||||
gdf[col] = gdf[col].fillna(0.0)
|
||||
|
||||
# Proxy de vivienda semi-vacia: ratio p10/p50 del consumo electrico del distrito
|
||||
# p10 muy bajo en relacion a p50 = hay un grupo de casas con consumo muy bajo
|
||||
# (vacias, segunda residencia, mayores que apenas usan electricidad)
|
||||
gdf["ratio_p10_p50_consumo"] = np.where(
|
||||
(gdf["consumo_p50_kwh"] > 0) & (gdf["consumo_p10_kwh"] > 0),
|
||||
gdf["consumo_p10_kwh"] / gdf["consumo_p50_kwh"],
|
||||
np.nan,
|
||||
)
|
||||
|
||||
# Viviendas INE a nivel CCAA (documentado en /metodologia)
|
||||
gdf["viviendas_vacias_pct_ccaa"] = 16.2
|
||||
gdf["viviendas_uso_esporadico_pct_ccaa"] = 6.9
|
||||
|
||||
@@ -41,6 +41,7 @@ def main() -> None:
|
||||
"consumo_p10_kwh", "consumo_p25_kwh", "consumo_p50_kwh",
|
||||
"consumo_p75_kwh", "consumo_p90_kwh",
|
||||
"airbnb_listings_por_1000_viviendas",
|
||||
"ratio_p10_p50_consumo",
|
||||
"geometry",
|
||||
]
|
||||
cols = [c for c in cols if c in gdf.columns]
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
"""
|
||||
Analisis de la tabla 59532 (Censo 2021) como proxy de vivienda semi-vacia / uso
|
||||
estacional en Balears.
|
||||
|
||||
El Census 2021 no da serie temporal, pero da los percentiles de consumo electrico
|
||||
por distrito. Interpretacion:
|
||||
- p10 muy bajo: muchas casas con consumo muy bajo. Posibles vacias, segunda
|
||||
residencia de uso solo estival, o personas mayores que apenas usan electricidad.
|
||||
- p50 (mediana) estable: la mayoria de hogares consume un valor normal.
|
||||
- p90 alto: hay casas con consumo muy alto (AC, calefaccion, varios miembros).
|
||||
|
||||
Ratios utiles:
|
||||
- p10/p50 bajo (cercano a 0): distribucion normal, todos consumen similar
|
||||
- p10/p50 alto (cercano a 1): distribucion asimetrica, hay un grupo de bajo consumo
|
||||
que arrastra la p10 hacia abajo (posible vacio/estacional)
|
||||
|
||||
Tambien se cruza con la presion Airbnb por distrito (sumando listings de M/M
|
||||
que caen dentro de cada distrito censal) para ver si hay correlacion entre
|
||||
presion turistica y heterogeneidad de consumo.
|
||||
|
||||
Output:
|
||||
- data/output/vivienda_vacia_analysis.md (reporte markdown)
|
||||
- data/output/vivienda_vacia_por_distrito.csv (datos por distrito)
|
||||
"""
|
||||
|
||||
from pathlib import Path
|
||||
import warnings
|
||||
|
||||
import pandas as pd
|
||||
import geopandas as gpd
|
||||
import numpy as np
|
||||
|
||||
warnings.filterwarnings("ignore")
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
RAW = ROOT / "data" / "raw"
|
||||
OUT = ROOT / "data" / "output"
|
||||
|
||||
|
||||
def parse_kwh(value: str) -> float:
|
||||
"""Parsea valores de la tabla 59532 con formato mixto espanol.
|
||||
|
||||
Dos formatos observados en el CSV:
|
||||
- Decimal: "629.000" -> 629 (los .000 son colas de precision)
|
||||
- Miles: "1.210" -> 1210 (separador de miles)
|
||||
|
||||
Distingo por la cola: si la parte despues del punto son todos 0, es decimal.
|
||||
En otro caso, el punto es separador de miles.
|
||||
"""
|
||||
s = str(value).strip()
|
||||
if "." not in s:
|
||||
# Sin punto: numero entero
|
||||
return float(s)
|
||||
int_part, dec_part = s.split(".", 1)
|
||||
if set(dec_part) == {"0"}:
|
||||
# "629.000" -> 629
|
||||
return float(int_part)
|
||||
# "1.210" -> 1210
|
||||
return float(int_part + dec_part)
|
||||
|
||||
|
||||
def load_consumo_distrito() -> pd.DataFrame:
|
||||
"""Carga tabla 59532 y agrega a nivel de distrito."""
|
||||
df = pd.read_csv(RAW / "59532.csv", sep=";", encoding="latin1", low_memory=False)
|
||||
df.columns = ["DISTRITO", "PERCENTIL", "TOTAL"]
|
||||
df = df[df["DISTRITO"].astype(str).str.strip().str.startswith("07")].copy()
|
||||
df["CDIS"] = df["DISTRITO"].astype(str).str.strip().str[:7]
|
||||
df["NMUN_DIST"] = df["DISTRITO"].astype(str).str.strip()
|
||||
df["kwh"] = df["TOTAL"].apply(parse_kwh)
|
||||
df["percentil"] = df["PERCENTIL"].str.extract(r"Percentil (\d+)").astype(int)
|
||||
pivot = df.pivot_table(
|
||||
index=["CDIS", "NMUN_DIST"],
|
||||
columns="percentil",
|
||||
values="kwh",
|
||||
aggfunc="first",
|
||||
).reset_index()
|
||||
pivot.columns = ["CDIS", "NMUN_DIST"] + [f"consumo_p{p}_kwh" for p in pivot.columns[2:]]
|
||||
return pivot
|
||||
|
||||
|
||||
def load_airbnb_by_distrito() -> pd.DataFrame:
|
||||
"""Suma listings de Airbnb por distrito censal (Mallorca + Menorca)."""
|
||||
out_rows = []
|
||||
for isla in ["mallorca", "menorca"]:
|
||||
df = pd.read_csv(RAW / f"airbnb_{isla.lower()}_listings.csv.gz", low_memory=False)
|
||||
df = df[(df["availability_365"] > 0) | (df["room_type"] == "Entire home/apt")]
|
||||
df = df.dropna(subset=["latitude", "longitude"])
|
||||
gdf_secc = gpd.read_file(RAW / "secciones_balears.gpkg")[["CUSEC", "geometry"]]
|
||||
gdf_secc["CDIS"] = gdf_secc["CUSEC"].astype(str).str[:7]
|
||||
gdf_pts = gpd.GeoDataFrame(
|
||||
df,
|
||||
geometry=gpd.points_from_xy(df["longitude"], df["latitude"]),
|
||||
crs="EPSG:4326",
|
||||
)
|
||||
joined = gpd.sjoin(gdf_pts, gdf_secc, how="inner", predicate="within")
|
||||
agg = joined.groupby("CDIS").agg(
|
||||
airbnb_listings=("id", "count"),
|
||||
airbnb_entire_homes=("room_type", lambda s: (s == "Entire home/apt").sum()),
|
||||
).reset_index()
|
||||
out_rows.append(agg)
|
||||
full = pd.concat(out_rows, ignore_index=True)
|
||||
return full.groupby("CDIS", as_index=False).sum()
|
||||
|
||||
|
||||
def load_viviendas_municipio() -> pd.DataFrame:
|
||||
"""Carga viviendas totales por municipio (tabla 59531)."""
|
||||
df = pd.read_csv(RAW / "59531.csv", sep=";", encoding="latin1", low_memory=False)
|
||||
df.columns = ["NAC", "CCAA", "PROV", "MUN", "INDICADOR", "TOTAL"]
|
||||
df = df[df["PROV"].astype(str).str.contains("Balears", na=False, regex=False)].copy()
|
||||
df = df[df["INDICADOR"] == "Viviendas totales"].copy()
|
||||
df["CMUN"] = df["MUN"].astype(str).str.strip().str[:5]
|
||||
df["NMUN"] = df["MUN"].astype(str).str.strip().str[6:]
|
||||
df = df[df["CMUN"] != "07999"].copy()
|
||||
df["viviendas_totales"] = pd.to_numeric(
|
||||
df["TOTAL"].astype(str).str.replace(".", "", regex=False).str.replace(",", ".", regex=False),
|
||||
errors="coerce",
|
||||
).fillna(0).astype(int)
|
||||
return df[["CMUN", "NMUN", "viviendas_totales"]]
|
||||
|
||||
|
||||
def main() -> None:
|
||||
print("=== Analisis vivienda semi-vacia (proxy p10/p50) ===\n")
|
||||
|
||||
consumo = load_consumo_distrito()
|
||||
print(f"Distritos con dato de consumo: {len(consumo)}")
|
||||
|
||||
airbnb = load_airbnb_by_distrito()
|
||||
print(f"Distritos con listings Airbnb (M/M): {len(airbnb)}")
|
||||
|
||||
viviendas = load_viviendas_municipio()
|
||||
print(f"Municipios con dato de viviendas: {len(viviendas)}")
|
||||
|
||||
# Compute ratios
|
||||
consumo["ratio_p10_p50"] = consumo["consumo_p10_kwh"] / consumo["consumo_p50_kwh"]
|
||||
consumo["ratio_p25_p50"] = consumo["consumo_p25_kwh"] / consumo["consumo_p50_kwh"]
|
||||
consumo["ratio_p90_p50"] = consumo["consumo_p90_kwh"] / consumo["consumo_p50_kwh"]
|
||||
consumo["rango_p10_p90"] = consumo["consumo_p90_kwh"] - consumo["consumo_p10_kwh"]
|
||||
# Indicador de "heterogeneidad": diferencia entre p10 y p50 normalizada
|
||||
consumo["gap_bajo_consumo_pct"] = (1 - consumo["ratio_p10_p50"]) * 100
|
||||
|
||||
# Cross-reference
|
||||
merged = consumo.merge(airbnb, on="CDIS", how="left").fillna({"airbnb_listings": 0, "airbnb_entire_homes": 0})
|
||||
|
||||
# Add municipio name (extract from CDIS: 07001 = municipio code)
|
||||
merged["CMUN"] = merged["CDIS"].str[:5]
|
||||
merged = merged.merge(viviendas[["CMUN", "NMUN", "viviendas_totales"]], on="CMUN", how="left").fillna({"viviendas_totales": 0})
|
||||
# Airbnbs per 1000 viviendas (proxy de presion)
|
||||
merged["airbnb_per_1000_viv"] = np.where(
|
||||
merged["viviendas_totales"] > 0,
|
||||
merged["airbnb_listings"] / merged["viviendas_totales"] * 1000,
|
||||
0,
|
||||
)
|
||||
|
||||
# Save CSV
|
||||
csv_out = OUT / "vivienda_vacia_por_distrito.csv"
|
||||
merged.drop(columns=["NMUN_DIST"], errors="ignore").to_csv(csv_out, index=False, encoding="utf-8")
|
||||
print(f"\nGuardado {csv_out.relative_to(ROOT)}: {len(merged)} distritos")
|
||||
|
||||
# Stats summary
|
||||
p10_mediana = float(merged["ratio_p10_p50"].median())
|
||||
p10_p25 = merged["ratio_p10_p50"].quantile(0.25)
|
||||
p10_p75 = merged["ratio_p10_p50"].quantile(0.75)
|
||||
print(f"\nratio p10/p50 mediana: {p10_mediana:.3f}")
|
||||
print(f" Q1: {p10_p25:.3f}, Q3: {p10_p75:.3f}")
|
||||
# Interpretation: ratio bajo = distribucion normal, ratio alto = muchas casas con poco consumo
|
||||
n_alto = (merged["ratio_p10_p50"] < 0.4).sum()
|
||||
print(f" distritos con ratio < 0.4 (mucha cola de bajo consumo): {n_alto}/{len(merged)}")
|
||||
|
||||
# Correlacion airbnb per 1000 viv vs ratio p10/p50
|
||||
corr = merged[["airbnb_per_1000_viv", "ratio_p10_p50"]].corr().iloc[0, 1]
|
||||
print(f"\nCorrelacion airbnb/1000viv vs ratio p10/p50: {corr:.3f}")
|
||||
|
||||
# Top 10 distritos con mas "cola de bajo consumo" (potencialmente vacios/estacionales)
|
||||
top_gap = merged.nsmallest(10, "ratio_p10_p50")[["NMUN_DIST", "consumo_p10_kwh", "consumo_p50_kwh", "ratio_p10_p50", "airbnb_listings", "airbnb_per_1000_viv"]]
|
||||
|
||||
# Top 10 distritos con mas presion Airbnb
|
||||
top_airbnb = merged.nlargest(10, "airbnb_per_1000_viv")[["NMUN_DIST", "airbnb_listings", "viviendas_totales", "airbnb_per_1000_viv", "ratio_p10_p50"]]
|
||||
|
||||
# Generate markdown report
|
||||
md = []
|
||||
md.append("# Analisis vivienda semi-vacia Balears (Censo 2021)\n")
|
||||
md.append("**Fuente**: INE Censo 2021 - Tabla 59532 (percentiles consumo electrico por distrito censal) y Tabla 59531 (viviendas totales por municipio).\n")
|
||||
md.append("**Limitacion importante**: El Censo 2021 da un snapshot anual, NO serie temporal. Los percentiles no distinguen invierno vs verano. Se usan como PROXY de la heterogeneidad de uso:\n")
|
||||
md.append("- `p10` bajo: hay casas que consumen muy poco. Podrian ser vacias, segunda residencia estival, o mayores que apenas usan luz.\n")
|
||||
md.append("- `p50` (mediana): el hogar tipico del distrito.\n")
|
||||
md.append("- `ratio_p10_p50` bajo (<0.4): cola izquierda larga = mas casas con consumo muy bajo = potencial vivienda semi-vacia.\n")
|
||||
md.append("- `ratio_p10_p50` alto (~0.7+): distribucion normal = la mayoria de casas se parecen.\n\n")
|
||||
|
||||
md.append("## Metodologia\n")
|
||||
md.append("Para cada distrito censal:\n")
|
||||
md.append("1. Se extrae p10/p25/p50/p75/p90 del consumo anual de electricidad (kWh)\n")
|
||||
md.append("2. Se calcula `ratio_p10_p50 = p10 / p50`. Bajo = distribucion asimetrica con cola de bajo consumo\n")
|
||||
md.append("3. Se cruza con listings de Airbnb del Inside Airbnb (junio 2026) por distrito\n")
|
||||
md.append("4. Se cruza con viviendas totales del municipio (Censo 2021) para normalizar\n\n")
|
||||
|
||||
md.append("## Resultados globales\n")
|
||||
md.append(f"- **Distritos analizados**: {len(merged)}\n")
|
||||
md.append(f"- **ratio p10/p50 mediana**: {p10_mediana:.3f} (Q1: {p10_p25:.3f}, Q3: {p10_p75:.3f})\n")
|
||||
md.append(f"- **Distritos con ratio < 0.4** (posible concentracion de vivienda semi-vacia): **{n_alto} de {len(merged)} ({100*n_alto/len(merged):.0f}%)**\n")
|
||||
md.append(f"- **Correlacion airbnb/1000viv vs ratio p10/p50**: {corr:.3f}\n")
|
||||
if corr < -0.2:
|
||||
md.append(" > Correlacion negativa moderada: mas Airbnb, MENOS cola de bajo consumo. ")
|
||||
md.append(" > Interpretacion: los distritos turisticos tienen MENOS vacio relativo (las casas estan alquiladas).\n")
|
||||
elif corr > 0.2:
|
||||
md.append(" > Correlacion positiva: mas Airbnb, MAS cola de bajo consumo. ")
|
||||
md.append(" > Interpretacion: los distritos turisticos tienen mas vivienda vacia (desplazamiento).\n")
|
||||
else:
|
||||
md.append(" > Correlacion debil: no hay patron claro entre Airbnb y vacio residencial.\n")
|
||||
|
||||
md.append("\n## Top 10 distritos con MENOR ratio p10/p50 (mas cola de bajo consumo)\n")
|
||||
md.append("Estos distritos tienen el percentil 10 mas bajo en relacion a la mediana. Indica que hay un grupo de casas con consumo electrico muy bajo.\n\n")
|
||||
md.append("| Distrito | p10 (kWh) | p50 (kWh) | ratio p10/p50 | Listings Airbnb | Airbnb/1000 viv |\n")
|
||||
md.append("|---|---:|---:|---:|---:|---:|\n")
|
||||
for _, r in top_gap.iterrows():
|
||||
md.append(f"| {r['NMUN_DIST'][:50]} | {r['consumo_p10_kwh']:,.0f} | {r['consumo_p50_kwh']:,.0f} | {r['ratio_p10_p50']:.2f} | {int(r['airbnb_listings'])} | {r['airbnb_per_1000_viv']:.1f} |\n")
|
||||
|
||||
md.append("\n## Top 10 distritos con MAS presion Airbnb (per capita)\n")
|
||||
md.append("| Distrito | Listings Airbnb | Viviendas | Airbnb/1000 viv | ratio p10/p50 |\n")
|
||||
md.append("|---|---:|---:|---:|---:|\n")
|
||||
for _, r in top_airbnb.iterrows():
|
||||
md.append(f"| {r['NMUN_DIST'][:50]} | {int(r['airbnb_listings'])} | {int(r['viviendas_totales']):,} | {r['airbnb_per_1000_viv']:.1f} | {r['ratio_p10_p50']:.2f} |\n")
|
||||
|
||||
md.append("\n## Lectura del hallazgo\n\n")
|
||||
md.append("**No podemos demostrar aumento de demanda invierno vs verano** con estos datos (es un snapshot del ano 2021, no serie temporal).\n\n")
|
||||
md.append("**Lo que SI podemos hacer**: usar `ratio p10_p50` como **proxy de heterogeneidad de uso**. La hipotesis es que:\n")
|
||||
md.append("- En zonas donde la mayoria de casas se usan como segunda residencia estival, la cola izquierda del consumo electrico es mas larga (ratio bajo).\n")
|
||||
md.append("- En zonas de uso residencial estable, la distribucion es mas homogenea (ratio alto).\n\n")
|
||||
md.append("Para comparar **realmente invierno vs verano** haria falta:\n")
|
||||
md.append("- Serie temporal de REE (API rota para geo_limit=baleares)\n")
|
||||
md.append("- O datos del Govern Balear / CNMC con desglose mensual\n")
|
||||
md.append("- O microdatos del Censo 2021 (no accesibles publicamente con granularidad mensual)\n")
|
||||
|
||||
md.append("\n## Recomendaciones para profundizar\n\n")
|
||||
md.append("1. **Solicitar datos** a la Conselleria de Transicio Energetica del Govern Balear\n")
|
||||
md.append("2. **Esperar a que REE arregle** la API para `geo_limit=baleares` (reporte en su portal)\n")
|
||||
md.append("3. **Cruzar con datos de agua** (Conselleria de Medi Ambient): una vivienda vacia consume menos agua, mismo patron\n")
|
||||
|
||||
with open(OUT / "vivienda_vacia_analysis.md", "w", encoding="utf-8") as f:
|
||||
f.write("".join(md))
|
||||
print(f"Guardado {OUT / 'vivienda_vacia_analysis.md'}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+675
-675
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,70 @@
|
||||
# Analisis vivienda semi-vacia Balears (Censo 2021)
|
||||
**Fuente**: INE Censo 2021 - Tabla 59532 (percentiles consumo electrico por distrito censal) y Tabla 59531 (viviendas totales por municipio).
|
||||
**Limitacion importante**: El Censo 2021 da un snapshot anual, NO serie temporal. Los percentiles no distinguen invierno vs verano. Se usan como PROXY de la heterogeneidad de uso:
|
||||
- `p10` bajo: hay casas que consumen muy poco. Podrian ser vacias, segunda residencia estival, o mayores que apenas usan luz.
|
||||
- `p50` (mediana): el hogar tipico del distrito.
|
||||
- `ratio_p10_p50` bajo (<0.4): cola izquierda larga = mas casas con consumo muy bajo = potencial vivienda semi-vacia.
|
||||
- `ratio_p10_p50` alto (~0.7+): distribucion normal = la mayoria de casas se parecen.
|
||||
|
||||
## Metodologia
|
||||
Para cada distrito censal:
|
||||
1. Se extrae p10/p25/p50/p75/p90 del consumo anual de electricidad (kWh)
|
||||
2. Se calcula `ratio_p10_p50 = p10 / p50`. Bajo = distribucion asimetrica con cola de bajo consumo
|
||||
3. Se cruza con listings de Airbnb del Inside Airbnb (junio 2026) por distrito
|
||||
4. Se cruza con viviendas totales del municipio (Censo 2021) para normalizar
|
||||
|
||||
## Resultados globales
|
||||
- **Distritos analizados**: 116
|
||||
- **ratio p10/p50 mediana**: 0.289 (Q1: 0.246, Q3: 0.336)
|
||||
- **Distritos con ratio < 0.4** (posible concentracion de vivienda semi-vacia): **103 de 116 (89%)**
|
||||
- **Correlacion airbnb/1000viv vs ratio p10/p50**: 0.131
|
||||
> Correlacion debil: no hay patron claro entre Airbnb y vacio residencial.
|
||||
|
||||
## Top 10 distritos con MENOR ratio p10/p50 (mas cola de bajo consumo)
|
||||
Estos distritos tienen el percentil 10 mas bajo en relacion a la mediana. Indica que hay un grupo de casas con consumo electrico muy bajo.
|
||||
|
||||
| Distrito | p10 (kWh) | p50 (kWh) | ratio p10/p50 | Listings Airbnb | Airbnb/1000 viv |
|
||||
|---|---:|---:|---:|---:|---:|
|
||||
| 0704501 Puigpunyent distrito 01 | 111 | 3,615 | 0.03 | 39 | 30.6 |
|
||||
| 0705405 SantaEulà riadesRiu distrito 05 | 119 | 3,533 | 0.03 | 0 | 0.0 |
|
||||
| 0702403 Formentera distrito 03 | 574 | 3,038 | 0.19 | 0 | 0.0 |
|
||||
| 0790201 MigjornGran(Es) distrito 01 | 535 | 2,796 | 0.19 | 45 | 38.1 |
|
||||
| 0703307 Manacor distrito 07 | 493 | 2,424 | 0.20 | 149 | 5.2 |
|
||||
| 0705102 SantLlorençdesCardassar distrito 02 | 525 | 2,538 | 0.21 | 165 | 25.3 |
|
||||
| 0705403 SantaEulà riadesRiu distrito 03 | 1,006 | 4,826 | 0.21 | 0 | 0.0 |
|
||||
| 0701106 Calvià distrito 06 | 542 | 2,569 | 0.21 | 44 | 1.2 |
|
||||
| 0702402 Formentera distrito 02 | 475 | 2,185 | 0.22 | 0 | 0.0 |
|
||||
| 0700503 Andratx distrito 03 | 469 | 2,146 | 0.22 | 32 | 2.7 |
|
||||
|
||||
## Top 10 distritos con MAS presion Airbnb (per capita)
|
||||
| Distrito | Listings Airbnb | Viviendas | Airbnb/1000 viv | ratio p10/p50 |
|
||||
|---|---:|---:|---:|---:|
|
||||
| 0700901 Búger distrito 01 | 141 | 888 | 158.8 | 0.28 |
|
||||
| 0703701 Mercadal(Es) distrito 01 | 690 | 7,208 | 95.7 | 2.36 |
|
||||
| 0704203 Pollença distrito 03 | 1239 | 13,772 | 90.0 | 0.23 |
|
||||
| 0705502 SantaMargalida distrito 02 | 594 | 8,414 | 70.6 | 2.41 |
|
||||
| 0706301 Valldemossa distrito 01 | 103 | 1,483 | 69.5 | 0.24 |
|
||||
| 0705801 Selva distrito 01 | 199 | 2,990 | 66.6 | 0.23 |
|
||||
| 0701401 Capdepera distrito 01 | 518 | 9,119 | 56.8 | 0.22 |
|
||||
| 0703901 Muro distrito 01 | 276 | 5,092 | 54.2 | 0.25 |
|
||||
| 0701201 Campanet distrito 01 | 97 | 1,911 | 50.8 | 2.62 |
|
||||
| 0705901 Salines(Ses) distrito 01 | 241 | 4,922 | 49.0 | 0.29 |
|
||||
|
||||
## Lectura del hallazgo
|
||||
|
||||
**No podemos demostrar aumento de demanda invierno vs verano** con estos datos (es un snapshot del ano 2021, no serie temporal).
|
||||
|
||||
**Lo que SI podemos hacer**: usar `ratio p10_p50` como **proxy de heterogeneidad de uso**. La hipotesis es que:
|
||||
- En zonas donde la mayoria de casas se usan como segunda residencia estival, la cola izquierda del consumo electrico es mas larga (ratio bajo).
|
||||
- En zonas de uso residencial estable, la distribucion es mas homogenea (ratio alto).
|
||||
|
||||
Para comparar **realmente invierno vs verano** haria falta:
|
||||
- Serie temporal de REE (API rota para geo_limit=baleares)
|
||||
- O datos del Govern Balear / CNMC con desglose mensual
|
||||
- O microdatos del Censo 2021 (no accesibles publicamente con granularidad mensual)
|
||||
|
||||
## Recomendaciones para profundizar
|
||||
|
||||
1. **Solicitar datos** a la Conselleria de Transicio Energetica del Govern Balear
|
||||
2. **Esperar a que REE arregle** la API para `geo_limit=baleares` (reporte en su portal)
|
||||
3. **Cruzar con datos de agua** (Conselleria de Medi Ambient): una vivienda vacia consume menos agua, mismo patron
|
||||
@@ -0,0 +1,117 @@
|
||||
CDIS,consumo_p10_kwh,consumo_p25_kwh,consumo_p50_kwh,consumo_p75_kwh,consumo_p90_kwh,ratio_p10_p50,ratio_p25_p50,ratio_p90_p50,rango_p10_p90,gap_bajo_consumo_pct,airbnb_listings,airbnb_entire_homes,CMUN,NMUN,viviendas_totales,airbnb_per_1000_viv
|
||||
0700101,1016.0,2021.0,3507.0,5301.0,7614.0,0.28970630168234957,0.5762760193897919,2.1710863986313087,6598.0,71.02936983176504,67.0,64.0,07001,Alaró,3246,20.640788662969808
|
||||
0700102,920.0,1982.0,3181.0,5084.0,7858.0,0.28921722728701665,0.6230745048726816,2.470292360892801,6938.0,71.07827727129833,2.0,2.0,07001,Alaró,3246,0.6161429451632779
|
||||
0700301,1103.0,21.0,3359.0,4882.0,6477.0,0.3283715391485561,0.006251860672819291,1.9282524560881216,5374.0,67.1628460851444,107.0,98.0,07003,Alcúdia,12711,8.417905750924396
|
||||
0700302,823.0,1604.0,3177.0,5348.0,822.0,0.25904941768964435,0.5048788164935474,0.2587346553352219,-1.0,74.09505823103557,503.0,503.0,07003,Alcúdia,12711,39.572024230981036
|
||||
0700303,827.0,1755.0,3085.0,4758.0,659.0,0.2680713128038898,0.5688816855753647,0.21361426256077795,-168.0,73.19286871961101,160.0,156.0,07003,Alcúdia,12711,12.587522618204705
|
||||
0700304,533.0,920.0,1925.0,3611.0,5387.0,0.2768831168831169,0.4779220779220779,2.7984415584415583,4854.0,72.3116883116883,579.0,567.0,07003,Alcúdia,12711,45.55109747462827
|
||||
0700501,1083.0,1988.0,3226.0,4768.0,6785.0,0.33570985740855547,0.6162430254184749,2.103223806571606,5702.0,66.42901425914445,48.0,45.0,07005,Andratx,11753,4.084063643325108
|
||||
0700502,652.0,128.0,2666.0,5312.0,9293.0,0.24456114028507125,0.04801200300075019,3.485746436609152,8641.0,75.54388597149287,100.0,89.0,07005,Andratx,11753,8.508465923593976
|
||||
0700503,469.0,912.0,2146.0,4492.0,7045.0,0.21854613233923578,0.4249767008387698,3.282851817334576,6576.0,78.14538676607641,32.0,32.0,07005,Andratx,11753,2.7227090955500723
|
||||
0700901,972.0,2077.0,3515.0,5471.0,7776.0,0.27652916073968703,0.590896159317212,2.2122332859174962,6804.0,72.3470839260313,141.0,140.0,07009,Búger,888,158.78378378378378
|
||||
0701001,1383.0,2481.0,4054.0,6151.0,867.0,0.34114454859398124,0.6119881598421312,0.21386285150468673,-516.0,65.88554514060188,44.0,43.0,07010,Bunyola,3671,11.985834922364479
|
||||
0701002,1001.0,187.0,3252.0,5338.0,7343.0,0.30781057810578105,0.057503075030750306,2.2579950799507995,6342.0,69.2189421894219,22.0,22.0,07010,Bunyola,3671,5.992917461182239
|
||||
0701101,1215.0,2327.0,3962.0,6335.0,9334.0,0.306663301362948,0.5873296314992428,2.3558808682483594,8119.0,69.3336698637052,30.0,25.0,07011,Calvià,36492,0.8220979940808945
|
||||
0701102,811.0,1489.0,2851.0,5062.0,8726.0,0.284461592423711,0.5222728867064188,3.0606804629954403,7915.0,71.55384075762889,78.0,76.0,07011,Calvià,36492,2.1374547846103256
|
||||
0701103,715.0,1402.0,2592.0,4134.0,6249.0,0.27584876543209874,0.5408950617283951,2.4108796296296298,5534.0,72.41512345679013,90.0,83.0,07011,Calvià,36492,2.4662939822426835
|
||||
0701104,1281.0,2178.0,3419.0,5039.0,7211.0,0.37467095642000586,0.637028370868675,2.1090962269669493,5930.0,62.532904357999406,35.0,35.0,07011,Calvià,36492,0.9591143264277102
|
||||
0701105,636.0,1311.0,2618.0,4741.0,7997.0,0.24293353705118412,0.5007639419404125,3.0546218487394956,7361.0,75.70664629488158,84.0,78.0,07011,Calvià,36492,2.301874383426504
|
||||
0701106,542.0,1128.0,2569.0,424.0,6523.0,0.21097703386531724,0.43908135461268977,2.5391202802646946,5981.0,78.90229661346828,44.0,28.0,07011,Calvià,36492,1.2057437246519787
|
||||
0701201,955.0,2072.0,365.0,5564.0,7589.0,2.6164383561643834,5.676712328767123,20.791780821917808,6634.0,-161.64383561643834,97.0,93.0,07012,Campanet,1911,50.758765044479325
|
||||
0701202,854.0,1763.0,3357.0,5164.0,7544.0,0.25439380399165923,0.5251712838844206,2.247244563598451,6690.0,74.56061960083407,48.0,48.0,07012,Campanet,1911,25.11773940345369
|
||||
0701401,576.0,1246.0,2579.0,4384.0,6736.0,0.22334238076773943,0.4831329972857697,2.611865063978286,6160.0,77.66576192322606,518.0,473.0,07014,Capdepera,9119,56.80447417479987
|
||||
0701501,559.0,1202.0,2525.0,4059.0,6005.0,0.2213861386138614,0.476039603960396,2.378217821782178,5446.0,77.86138613861387,553.0,522.0,07015,Ciutadella de Menorca,17887,30.916307933135798
|
||||
0701502,823.0,1729.0,2987.0,4292.0,5772.0,0.2755272849012387,0.5788416471375962,1.9323736190157348,4949.0,72.44727150987613,76.0,74.0,07015,Ciutadella de Menorca,17887,4.248895846145245
|
||||
0701503,863.0,1686.0,2976.0,4399.0,5957.0,0.28998655913978494,0.5665322580645161,2.0016801075268815,5094.0,71.0013440860215,31.0,16.0,07015,Ciutadella de Menorca,17887,1.7331022530329288
|
||||
0701504,539.0,1143.0,2445.0,4204.0,6227.0,0.22044989775051124,0.46748466257668714,2.5468302658486706,5688.0,77.95501022494888,726.0,720.0,07015,Ciutadella de Menorca,17887,40.58813663554537
|
||||
0701601,991.0,2122.0,3426.0,5043.0,6856.0,0.28925861062463515,0.6193812025685931,2.0011675423234094,5865.0,71.07413893753649,16.0,16.0,07016,Consell,2117,7.557864903164856
|
||||
0701701,925.0,1757.0,3132.0,5002.0,7282.0,0.295338441890166,0.5609833971902938,2.3250319284802043,6357.0,70.4661558109834,60.0,58.0,07017,Costitx,1306,45.94180704441042
|
||||
0702001,1128.0,2249.0,3708.0,5597.0,812.0,0.3042071197411003,0.6065264293419633,0.21898597626752966,-316.0,69.57928802588998,55.0,40.0,07020,Esporles,2553,21.54328241284763
|
||||
0702201,1053.0,1972.0,3222.0,4706.0,6549.0,0.3268156424581006,0.612042209807573,2.032588454376164,5496.0,67.31843575418995,83.0,80.0,07022,Felanitx,13611,6.098008963338476
|
||||
0702202,794.0,1637.0,2907.0,4462.0,6432.0,0.2731338149294806,0.56312349501204,2.212590299277606,5638.0,72.68661850705193,41.0,41.0,07022,Felanitx,13611,3.012269487914187
|
||||
0702203,1137.0,2035.0,3283.0,4612.0,6524.0,0.3463295766067621,0.6198598842522084,1.9872068230277184,5387.0,65.36704233932379,76.0,69.0,07022,Felanitx,13611,5.583719050767762
|
||||
0702204,593.0,1184.0,2634.0,4523.0,6902.0,0.22513287775246774,0.4495064540622627,2.6203492786636295,6309.0,77.48671222475323,489.0,478.0,07022,Felanitx,13611,35.92682389243994
|
||||
0702301,913.0,1896.0,321.0,4714.0,6465.0,2.844236760124611,5.906542056074766,20.14018691588785,5552.0,-184.42367601246107,79.0,67.0,07023,Ferreries,2369,33.34740396791895
|
||||
0702401,783.0,1595.0,3464.0,6073.0,9376.0,0.2260392609699769,0.46045034642032334,2.7066974595842956,8593.0,77.39607390300232,0.0,0.0,07024,Formentera,6969,0.0
|
||||
0702402,475.0,871.0,2185.0,4749.0,8603.0,0.21739130434782608,0.39862700228832953,3.937299771167048,8128.0,78.26086956521739,0.0,0.0,07024,Formentera,6969,0.0
|
||||
0702403,574.0,1112.0,3038.0,5967.0,10021.0,0.1889400921658986,0.36603028308097435,3.2985516787360107,9447.0,81.10599078341014,0.0,0.0,07024,Formentera,6969,0.0
|
||||
0702602,640.0,1202.0,2085.0,3447.0,5359.0,0.3069544364508393,0.5764988009592326,2.570263788968825,4719.0,69.30455635491607,0.0,0.0,07026,Eivissa,23938,0.0
|
||||
0702603,950.0,1785.0,293.0,4426.0,63.0,3.242320819112628,6.092150170648464,0.2150170648464164,-887.0,-224.23208191126278,0.0,0.0,07026,Eivissa,23938,0.0
|
||||
0702604,1118.0,1863.0,2941.0,4336.0,5984.0,0.3801428085685141,0.6334580074804488,2.0346820809248554,4866.0,61.985719143148586,0.0,0.0,07026,Eivissa,23938,0.0
|
||||
0702701,1105.0,2021.0,3209.0,4648.0,6246.0,0.3443440324088501,0.6297912122156435,1.946400747896541,5141.0,65.565596759115,120.0,116.0,07027,Inca,15863,7.564773371997731
|
||||
0702702,1231.0,2162.0,3343.0,4732.0,6294.0,0.36823212683218665,0.6467244989530362,1.8827400538438528,5063.0,63.176787316781336,70.0,69.0,07027,Inca,15863,4.412784466998676
|
||||
0702703,1185.0,2104.0,3342.0,4755.0,6273.0,0.35457809694793535,0.6295631358467983,1.877019748653501,5088.0,64.54219030520647,35.0,30.0,07027,Inca,15863,2.206392233499338
|
||||
0702801,896.0,1919.0,3305.0,5159.0,7138.0,0.27110438729198183,0.5806354009077156,2.1597579425113462,6242.0,72.88956127080182,41.0,41.0,07028,Lloret de Vistalegre,1093,37.51143641354071
|
||||
0702901,1158.0,2018.0,3216.0,4823.0,6333.0,0.36007462686567165,0.6274875621890548,1.9692164179104477,5175.0,63.99253731343284,14.0,12.0,07029,Lloseta,3035,4.612850082372323
|
||||
0702902,1049.0,2087.0,3327.0,4887.0,6692.0,0.3152990682296363,0.6272918545235948,2.0114217012323414,5643.0,68.47009317703636,36.0,34.0,07029,Lloseta,3035,11.86161449752883
|
||||
0703001,812.0,1791.0,3406.0,5249.0,7272.0,0.2384028185554903,0.5258367586611862,2.1350557839107456,6460.0,76.15971814445098,55.0,55.0,07030,Llubí,1685,32.640949554896146
|
||||
0703002,853.0,1836.0,3377.0,5169.0,7599.0,0.25259105715131774,0.5436778205507847,2.25022209061297,6746.0,74.74089428486823,43.0,37.0,07030,Llubí,1685,25.519287833827892
|
||||
0703101,900.0,1827.0,3164.0,4781.0,6713.0,0.28445006321112515,0.577433628318584,2.1216814159292037,5813.0,71.55499367888748,81.0,73.0,07031,Llucmajor,23312,3.4746053534660257
|
||||
0703102,1147.0,1963.0,2998.0,4274.0,6055.0,0.38258839226150765,0.6547698465643762,2.0196797865243497,4908.0,61.74116077384924,2.0,2.0,07031,Llucmajor,23312,0.08579272477693892
|
||||
0703103,730.0,1419.0,2587.0,4074.0,5797.0,0.28218013142636256,0.5485117897178199,2.240819482025512,5067.0,71.78198685736375,67.0,55.0,07031,Llucmajor,23312,2.8740562800274536
|
||||
0703104,931.0,1877.0,3181.0,4956.0,7202.0,0.2926752593524049,0.5900660169757938,2.264067903175102,6271.0,70.73247406475951,326.0,310.0,07031,Llucmajor,23312,13.984214138641043
|
||||
0703105,1235.0,1864.0,2979.0,4096.0,5361.0,0.414568647197046,0.625713326619671,1.799597180261833,4126.0,58.5431352802954,2.0,1.0,07031,Llucmajor,23312,0.08579272477693892
|
||||
0703201,802.0,1499.0,2643.0,4183.0,6057.0,0.3034430571320469,0.5671585319712448,2.2917139614074915,5255.0,69.65569428679531,18.0,13.0,07032,Maó-Mahón,15173,1.1863178013576747
|
||||
0703202,936.0,1692.0,2689.0,4006.0,5456.0,0.34808478988471553,0.6292301970992934,2.0290070658237265,4520.0,65.19152101152845,4.0,4.0,07032,Maó-Mahón,15173,0.2636261780794833
|
||||
0703203,1132.0,1949.0,3069.0,4582.0,6397.0,0.36884978820462694,0.6350602802215706,2.084392310198762,5265.0,63.11502117953731,63.0,54.0,07032,Maó-Mahón,15173,4.152112304751862
|
||||
0703204,757.0,1479.0,2673.0,4138.0,5781.0,0.2832023943135054,0.55331088664422,2.1627384960718294,5024.0,71.67976056864947,2.0,2.0,07032,Maó-Mahón,15173,0.13181308903974165
|
||||
0703205,647.0,12.0,258.0,4829.0,7813.0,2.507751937984496,0.046511627906976744,30.282945736434108,7166.0,-150.7751937984496,61.0,61.0,07032,Maó-Mahón,15173,4.02029921571212
|
||||
0703301,856.0,1623.0,2788.0,4311.0,6374.0,0.30703012912482064,0.5821377331420373,2.2862266857962696,5518.0,69.29698708751793,122.0,118.0,07033,Manacor,28571,4.270064050960765
|
||||
0703302,829.0,1669.0,2857.0,4436.0,638.0,0.2901645082254113,0.5841792089604481,0.2233111655582779,-191.0,70.98354917745887,94.0,90.0,07033,Manacor,28571,3.290049350740261
|
||||
0703303,932.0,1819.0,3104.0,4692.0,6583.0,0.3002577319587629,0.5860180412371134,2.120811855670103,5651.0,69.9742268041237,120.0,111.0,07033,Manacor,28571,4.200063000945015
|
||||
0703304,1041.0,1744.0,2849.0,4347.0,604.0,0.3653913653913654,0.6121446121446121,0.21200421200421202,-437.0,63.46086346086346,47.0,39.0,07033,Manacor,28571,1.6450246753701305
|
||||
0703305,608.0,1217.0,2499.0,4202.0,6221.0,0.24329731892757103,0.48699479791916767,2.4893957583033215,5613.0,75.6702681072429,225.0,213.0,07033,Manacor,28571,7.875118126771903
|
||||
0703306,500.0,956.0,2036.0,3764.0,5554.0,0.2455795677799607,0.46954813359528486,2.7278978388998034,5054.0,75.44204322200393,40.0,37.0,07033,Manacor,28571,1.4000210003150046
|
||||
0703307,493.0,1023.0,2424.0,4616.0,7388.0,0.2033828382838284,0.422029702970297,3.047854785478548,6895.0,79.66171617161716,149.0,146.0,07033,Manacor,28571,5.215078226173392
|
||||
0703401,1023.0,1919.0,3331.0,5151.0,6972.0,0.30711498048634045,0.5761032722906034,2.0930651456019214,5949.0,69.28850195136596,41.0,41.0,07034,Mancor de la Vall,919,44.613710554951034
|
||||
0703601,1459.0,2505.0,3863.0,5755.0,8036.0,0.3776857364742428,0.6484597463111571,2.0802485115195446,6577.0,62.231426352575724,53.0,50.0,07036,Marratxí,15048,3.522062732589048
|
||||
0703602,1542.0,2506.0,3714.0,5279.0,7282.0,0.41518578352180935,0.674744211093161,1.9606892837910608,5740.0,58.48142164781906,40.0,40.0,07036,Marratxí,15048,2.658160552897395
|
||||
0703701,392.0,681.0,166.0,3477.0,5568.0,2.36144578313253,4.102409638554217,33.54216867469879,5176.0,-136.14457831325302,690.0,677.0,07037,"Mercadal, Es",7208,95.72697003329634
|
||||
0703801,722.0,1766.0,3135.0,4827.0,6971.0,0.23030303030303031,0.563317384370016,2.223604465709729,6249.0,76.96969696969697,1.0,1.0,07038,Montuïri,2197,0.4551661356395084
|
||||
0703802,742.0,1508.0,3023.0,4985.0,7441.0,0.24545153820707907,0.4988422097254383,2.4614621237181606,6699.0,75.45484617929209,43.0,35.0,07038,Montuïri,2197,19.572143832498863
|
||||
0703901,712.0,1384.0,2826.0,4677.0,6841.0,0.2519462137296532,0.4897381457891012,2.420736022646851,6129.0,74.80537862703468,276.0,272.0,07039,Muro,5092,54.20267085624509
|
||||
0703902,874.0,1778.0,3075.0,4736.0,6558.0,0.2842276422764228,0.5782113821138212,2.1326829268292684,5684.0,71.57723577235772,60.0,60.0,07039,Muro,5092,11.783189316575019
|
||||
0704001,796.0,1428.0,2351.0,3722.0,5717.0,0.33857932794555506,0.6074011059123777,2.431731178222033,4921.0,66.14206720544449,269.0,230.0,07040,Palma,186482,1.4424984717023628
|
||||
0704002,1001.0,1636.0,2567.0,3834.0,5528.0,0.3899493572263342,0.6373198285936892,2.153486560186989,4527.0,61.005064277366586,278.0,233.0,07040,Palma,186482,1.4907605023541146
|
||||
0704003,1058.0,168.0,2576.0,3786.0,5338.0,0.4107142857142857,0.06521739130434782,2.0722049689440993,4280.0,58.92857142857143,77.0,70.0,07040,Palma,186482,0.4129084844649886
|
||||
0704004,1039.0,1681.0,2595.0,3808.0,5281.0,0.4003853564547206,0.6477842003853564,2.0350674373795763,4242.0,59.96146435452794,149.0,119.0,07040,Palma,186482,0.7990047296790038
|
||||
0704005,882.0,1582.0,2608.0,4012.0,5785.0,0.33819018404907975,0.6065950920245399,2.2181748466257667,4903.0,66.18098159509202,146.0,125.0,07040,Palma,186482,0.7829173861284199
|
||||
0704101,849.0,1476.0,2962.0,4724.0,6919.0,0.28663065496286294,0.49831195138419987,2.335921674544227,6070.0,71.3369345037137,89.0,83.0,07041,Petra,2118,42.020774315391876
|
||||
0704102,871.0,1786.0,3124.0,5094.0,7537.0,0.278809218950064,0.5717029449423816,2.4126120358514727,6666.0,72.1190781049936,81.0,79.0,07041,Petra,2118,38.243626062322946
|
||||
0704201,999.0,2011.0,3456.0,532.0,7672.0,0.2890625,0.5818865740740741,2.2199074074074074,6673.0,71.09375,217.0,213.0,07042,Pollença,13772,15.756607609642751
|
||||
0704202,819.0,1778.0,3356.0,5307.0,7727.0,0.24404052443384983,0.5297973778307509,2.3024433849821215,6908.0,75.59594755661502,507.0,500.0,07042,Pollença,13772,36.8138251524833
|
||||
0704203,622.0,1274.0,2684.0,4686.0,6858.0,0.23174366616989567,0.47466467958271236,2.555141579731744,6236.0,76.82563338301043,1239.0,1232.0,07042,Pollença,13772,89.96514667441186
|
||||
0704204,1029.0,217.0,369.0,5392.0,7863.0,2.7886178861788617,0.5880758807588076,21.308943089430894,6834.0,-178.86178861788616,290.0,281.0,07042,Pollença,13772,21.057217542840547
|
||||
0704401,928.0,2035.0,3502.0,5166.0,6988.0,0.26499143346659054,0.5810965162764135,1.9954311821816104,6060.0,73.50085665334095,7.0,7.0,07044,"Pobla, Sa",6504,1.076260762607626
|
||||
0704402,904.0,1825.0,3337.0,5086.0,6773.0,0.2709020077914294,0.5468984117470782,2.0296673658975126,5869.0,72.90979922085705,45.0,45.0,07044,"Pobla, Sa",6504,6.918819188191882
|
||||
0704403,1026.0,1981.0,3457.0,5255.0,7108.0,0.2967891235175007,0.5730402082730691,2.0561180214058434,6082.0,70.32108764824994,46.0,46.0,07044,"Pobla, Sa",6504,7.072570725707257
|
||||
0704404,1048.0,2045.0,3428.0,5202.0,7289.0,0.3057176196032672,0.5965577596266044,2.1263127187864646,6241.0,69.42823803967329,137.0,137.0,07044,"Pobla, Sa",6504,21.063960639606396
|
||||
0704501,111.0,2184.0,3615.0,5634.0,8236.0,0.030705394190871368,0.604149377593361,2.2782849239280774,8125.0,96.92946058091286,39.0,33.0,07045,Puigpunyent,1275,30.58823529411765
|
||||
0704901,706.0,1691.0,3186.0,5142.0,7625.0,0.22159447583176398,0.5307595731324545,2.393283113622097,6919.0,77.8405524168236,10.0,10.0,07049,Sant Joan,1724,5.800464037122969
|
||||
0704902,741.0,1634.0,2938.0,4686.0,6997.0,0.252212389380531,0.5561606535057863,2.381552076242342,6256.0,74.7787610619469,30.0,30.0,07049,Sant Joan,1724,17.40139211136891
|
||||
0705001,704.0,178.0,379.0,7108.0,11306.0,1.8575197889182058,0.46965699208443273,29.8311345646438,10602.0,-85.75197889182058,0.0,0.0,07050,Sant Joan de Labritja,4366,0.0
|
||||
0705101,848.0,1858.0,3488.0,5602.0,7938.0,0.24311926605504589,0.5326834862385321,2.275802752293578,7090.0,75.68807339449542,117.0,104.0,07051,Sant Llorenç des Cardassar,6529,17.920049012099863
|
||||
0705102,525.0,1098.0,2538.0,4264.0,6367.0,0.20685579196217493,0.4326241134751773,2.508668242710796,5842.0,79.3144208037825,165.0,161.0,07051,Sant Llorenç des Cardassar,6529,25.271863991422883
|
||||
0705301,987.0,1981.0,3485.0,5432.0,7858.0,0.2832137733142037,0.5684361549497848,2.25480631276901,6871.0,71.67862266857964,11.0,11.0,07053,Santa Eugènia,1098,10.018214936247723
|
||||
0705401,843.0,1849.0,3275.0,5177.0,8093.0,0.25740458015267176,0.5645801526717558,2.471145038167939,7250.0,74.25954198473282,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705402,644.0,139.0,2883.0,5187.0,8679.0,0.22337842525147417,0.04821366631980576,3.010405827263267,8035.0,77.66215747485259,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705403,1006.0,2625.0,4826.0,8112.0,12171.0,0.20845420638209697,0.5439287194363862,2.521964359718193,11165.0,79.1545793617903,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705404,1081.0,2137.0,3598.0,5984.0,946.0,0.30044469149527514,0.593941078376876,0.26292384658143414,-135.0,69.95553085047248,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705405,119.0,222.0,3533.0,535.0,7924.0,0.033682422870082086,0.06283611661477498,2.242853099348995,7805.0,96.6317577129918,0.0,0.0,07054,Santa Eulària des Riu,22810,0.0
|
||||
0705501,756.0,1653.0,3008.0,4898.0,6812.0,0.25132978723404253,0.5495345744680851,2.264627659574468,6056.0,74.86702127659575,54.0,47.0,07055,Santa Margalida,8414,6.417874970287616
|
||||
0705502,593.0,1146.0,246.0,4239.0,6256.0,2.410569105691057,4.658536585365853,25.43089430894309,5663.0,-141.0569105691057,594.0,585.0,07055,Santa Margalida,8414,70.59662467316377
|
||||
0705601,1172.0,2157.0,361.0,5177.0,6814.0,3.2465373961218837,5.975069252077562,18.87534626038781,5642.0,-224.65373961218836,21.0,15.0,07056,Santa María del Camí,3644,5.762897914379802
|
||||
0705602,1132.0,2242.0,3541.0,5195.0,7381.0,0.31968370516803163,0.6331544761366845,2.0844394238915562,6249.0,68.03162948319684,27.0,21.0,07056,Santa María del Camí,3644,7.4094401756311745
|
||||
0705801,886.0,2108.0,3787.0,5545.0,7829.0,0.23395827832057037,0.5566411407446528,2.0673356218642724,6943.0,76.60417216794296,199.0,185.0,07058,Selva,2990,66.5551839464883
|
||||
0705802,1057.0,2071.0,3344.0,4986.0,7207.0,0.3160885167464115,0.6193181818181818,2.1552033492822966,6150.0,68.39114832535886,61.0,47.0,07058,Selva,2990,20.401337792642142
|
||||
0705901,497.0,819.0,1722.0,3719.0,628.0,0.2886178861788618,0.47560975609756095,0.36469221835075494,131.0,71.13821138211382,241.0,233.0,07059,"Salines, Ses",4922,48.9638358390898
|
||||
0706001,996.0,1855.0,3116.0,4988.0,74.0,0.3196405648267009,0.5953145057766367,0.02374839537869063,-922.0,68.03594351732991,44.0,40.0,07060,Sineu,2727,16.134946828016137
|
||||
0706002,950.0,1885.0,3191.0,4919.0,6645.0,0.2977123158884362,0.5907239109996866,2.082419304293325,5695.0,70.22876841115637,41.0,41.0,07060,Sineu,2727,15.034836817015035
|
||||
0706101,1041.0,1957.0,3405.0,5065.0,7255.0,0.30572687224669604,0.5747430249632893,2.130690161527166,6214.0,69.42731277533039,61.0,53.0,07061,Sóller,8124,7.508616445100936
|
||||
0706102,893.0,1937.0,3454.0,533.0,7608.0,0.25854082223508973,0.560799073537927,2.202663578459757,6715.0,74.14591777649102,149.0,124.0,07061,Sóller,8124,18.340718857705564
|
||||
0706103,648.0,1346.0,2643.0,4654.0,7615.0,0.24517593643586832,0.5092697692016648,2.8811956110480517,6967.0,75.48240635641316,231.0,227.0,07061,Sóller,8124,28.43426883308715
|
||||
0706301,819.0,1838.0,3435.0,5546.0,8355.0,0.23842794759825328,0.535080058224163,2.432314410480349,7536.0,76.15720524017468,103.0,94.0,07063,Valldemossa,1483,69.45380984490897
|
||||
0706401,748.0,1573.0,2866.0,4401.0,6385.0,0.26099092812281927,0.5488485694347522,2.2278436845778087,5637.0,73.90090718771806,47.0,32.0,07064,"Castell, Es",4426,10.619069136918212
|
||||
0706501,961.0,1919.0,3382.0,5086.0,6873.0,0.28415138971023063,0.5674157303370787,2.0322294500295683,5912.0,71.58486102897695,7.0,7.0,07065,Vilafranca de Bonany,1707,4.100761570005858
|
||||
0706502,1119.0,1995.0,3599.0,5348.0,7429.0,0.31091969991664353,0.5543206446235065,2.0641844956932482,6310.0,68.90803000833566,33.0,33.0,07065,Vilafranca de Bonany,1707,19.332161687170473
|
||||
0790201,535.0,1197.0,2796.0,4526.0,6523.0,0.1913447782546495,0.4281115879828326,2.332975679542203,5988.0,80.86552217453506,45.0,41.0,07902,"Migjorn Gran, Es",1180,38.13559322033898
|
||||
|
@@ -20,6 +20,7 @@ const variableOptions: VariableOption[] = [
|
||||
{ value: "hut_registros", labelKey: "map.variable_hut_registros", descKey: "map.variable_hut_registros_desc", scope: "hut" },
|
||||
{ value: "viviendas_totales", labelKey: "map.variable_viviendas_totales", descKey: "map.variable_viviendas_totales_desc", scope: "all" },
|
||||
{ value: "consumo_p50_kwh", labelKey: "map.variable_consumo_p50", descKey: "map.variable_consumo_p50_desc", scope: "all" },
|
||||
{ value: "ratio_p10_p50_consumo", labelKey: "map.variable_ratio_p10_p50", descKey: "map.variable_ratio_p10_p50_desc", scope: "all" },
|
||||
];
|
||||
|
||||
const popupTitleTmpl = t(lang, "map.popup_title");
|
||||
@@ -168,6 +169,10 @@ const popupTitleTmpl = t(lang, "map.popup_title");
|
||||
lang === "es"
|
||||
? "Percentil 50 de consumo eléctrico anual por distrito (Censo 2021)"
|
||||
: "Percentil 50 de consum elèctric anual per districte (Cens 2021)",
|
||||
ratio_p10_p50:
|
||||
lang === "es"
|
||||
? "Cociente entre el percentil 10 y la mediana del consumo eléctrico del distrito (Censo 2021). Bajo (<0.3) = grupo de casas con consumo muy bajo (posibles vacías). Alto (~0.6+) = uso residencial estable."
|
||||
: "Quocient entre el percentil 10 i la mediana del consum elèctric del districte (Cens 2021). Baix (<0.3) = grup de cases amb consum molt baix. Alt (~0.6+) = ús residencial estable.",
|
||||
};
|
||||
|
||||
const LAYERS: Record<string, {
|
||||
@@ -298,6 +303,19 @@ const popupTitleTmpl = t(lang, "map.popup_title");
|
||||
desc: DESC.consumo_p50_kwh,
|
||||
appliesTo: T.legend_islands_all_dis,
|
||||
},
|
||||
ratio_p10_p50_consumo: {
|
||||
scope: "all",
|
||||
field: "ratio_p10_p50_consumo",
|
||||
colorExpr: [
|
||||
"step", ["coalesce", ["get", "ratio_p10_p50_consumo"], 0],
|
||||
"#7c2d12", 0.15, "#c2410c", 0.25, "#f97316", 0.35, "#fbbf24", 0.5, "#86efac",
|
||||
],
|
||||
stops: [0, 0.15, 0.25, 0.35, 0.5],
|
||||
colors: ["#7c2d12", "#c2410c", "#f97316", "#fbbf24", "#86efac", "#86efac"],
|
||||
label: T.ratio_p10_p50,
|
||||
desc: DESC.ratio_p10_p50,
|
||||
appliesTo: T.legend_islands_all_dis,
|
||||
},
|
||||
};
|
||||
|
||||
const fmt = (n: number) =>
|
||||
@@ -476,6 +494,7 @@ const popupTitleTmpl = t(lang, "map.popup_title");
|
||||
if (activeVariable === "airbnb_revenue_total") return fmtMoney(n);
|
||||
if (activeVariable === "consumo_p50_kwh") return `${fmt(n)} kWh`;
|
||||
if (activeVariable === "airbnb_per_1000") return n.toFixed(0);
|
||||
if (activeVariable === "ratio_p10_p50_consumo") return n.toFixed(2);
|
||||
return fmtShort(n);
|
||||
}
|
||||
|
||||
|
||||
@@ -84,6 +84,8 @@
|
||||
"variable_viviendas_totales_desc": "Total d'habitatges per municipi (Cens 2021, replicat a totes les seccions del municipi)",
|
||||
"variable_consumo_p50": "Mediana consum elèctric (kWh)",
|
||||
"variable_consumo_p50_desc": "Percentil 50 de consum elèctric anual per districte (Cens 2021). Mediana del que consumeix una llar al districte.",
|
||||
"variable_ratio_p10_p50": "Ratio p10/p50 consum elèctric",
|
||||
"variable_ratio_p10_p50_desc": "Quocient entre el percentil 10 i la mediana del consum elèctric del districte (Cens 2021). Baix (<0.3) = grup de cases amb consum molt baix, possibles vacants o segones residències. Alt (~0.6+) = distribució més homogènia d'ús residencial estable.",
|
||||
"variable_airbnb_per_1000": "Pressió Airbnb (per 1000 habitatges)",
|
||||
"variable_airbnb_per_1000_desc": "Listings Airbnb per cada 1000 habitatges del municipi. Mesura relativa de la pressió turística sobre el parc residencial.",
|
||||
"legend_title": "Llegenda",
|
||||
|
||||
@@ -86,6 +86,8 @@
|
||||
"variable_consumo_p50_desc": "Percentil 50 de consumo eléctrico anual por distrito (Censo 2021). Mediana de lo que consume un hogar en el distrito.",
|
||||
"variable_airbnb_per_1000": "Presión Airbnb (por 1000 viviendas)",
|
||||
"variable_airbnb_per_1000_desc": "Listings Airbnb por cada 1000 viviendas del municipio. Medida relativa de la presión turística sobre el parque residencial.",
|
||||
"variable_ratio_p10_p50": "Ratio p10/p50 consumo eléctrico (proxy semi-vacío)",
|
||||
"variable_ratio_p10_p50_desc": "Cociente entre el percentil 10 y la mediana del consumo eléctrico del distrito (Censo 2021). Bajo (<0.3) = hay un grupo numeroso de casas con consumo muy bajo, posibles vacías o segundas residencias. Alto (~0.6+) = distribución más homogénea de uso residencial estable.",
|
||||
"legend_title": "Leyenda",
|
||||
"legend_scale_label": "Escala",
|
||||
"legend_applies_to": "Aplica a",
|
||||
|
||||
Reference in New Issue
Block a user