ANALISIS DE LA ACTIVIDAD COMERCIAL DE BARCELONA (2019 VS 2024)
Proyecto de Modelos y herramientas de decisión 2025
INTEGRANTES:
Guimaray Jimenez Omar Andre
Paredes Zuñiga Pavel Santiago
Velarde Nina Jose Miguel
1 INTRODUCCION
La actividad comercial constituye uno de los pilares fundamentales del dinamismo económico y social de las ciudades. En el caso de Barcelona, su red de comercios distribuidos a lo largo de los distritos y barrios no solo influye en la economía local, sino también en la calidad de vida de sus habitantes y la configuración del espacio urbano. En este contexto, el presente informe tiene como objetivo analizar la evolución de la actividad comercial en Barcelona, tomando como base los años 2019 y 2024, con especial atención a los efectos provocados por la pandemia de COVID-19 en la configuración del comercio urbano.
OBJETIVOS
Este informe se estructura en torno a tres objetivos principales:
Objetivo 1: Evaluar las actividades más relevantes de los comercios de Barcelona en 2024, señalando las diferencias existentes entre los diferentes distritos.
Objetivo 2: Analizar la evolución de los espacios de concentración comercial —como centros comerciales, mercados, ejes y galerías— entre 2019 y 2024.
Objetivo 3: Detectar las zonas de alta y baja densidad comercial en Barcelona en el año 2024, con el fin de identificar patrones de concentración o vaciamiento comercial.
2 METODOLOGIA
Para llevar a cabo el análisis de la actividad comercial de Barcelona, se ha seguido una metodología estructurada en varias etapas: recolección de datos, tratamiento y limpieza, análisis exploratorio y visualización. Como se vera acontinuacion:
2.1 Recoleccion de datos
Los datos utilizados en este estudio provienen del portal de datos abiertos del Ayuntamiento de Barcelona (Barcelona Open Data):
Censo de locales en planta baja destinados a actividad económica
Organización administrativa de Barcelona
2.2 Herramientas utilizadas
El análisis de los datos se ha realizado utilizando el lenguaje de programación (R), con el soporte de los siguientes paquetes:
tidyverse: para manipulación y análisis de datos.
sf: para manejo de datos espaciales.
ggspatial: para la inclusión de elementos cartográficos (como escalas y flechas de norte) en los mapas.
janitor: para la lectura y limpieza inicial de los datos.
2.3 Proceso de análisis
Para el desarrollo del analisis se considero el siguiente procedimiento:
2.3.1 Lectura y exploración inicial de los datos:
Importación de los datasets correspondientes a 2019 y 2024.
Revisión de las variables disponibles (tipo de actividad, estado del local, coordenadas geográficas, distrito, etc.).
2.3.2 Limpieza y preparación:
Estandarización de los nombres de columnas mediante el paquete janitor.
Eliminación de registros duplicados o con datos faltantes relevantes.
Conversión de tipos de datos a formatos adecuados (fechas, factores, coordenadas, etc.).
2.3.3 Clasificación de locales comerciales:
Agrupación de locales según su sector o grupo de actividad.
Filtrado de locales sin actividad económica (código de actividad igual a 0).
Categorización por tipo de espacio de concentración comercial: mercados, centros comerciales, galerías y ejes.
2.3.4 Comparación temporal (2019 vs 2024):
Cálculo y comparación del número de establecimientos por tipo de concentración comercial.
Evaluación de cambios en la presencia de los diferentes formatos comerciales entre ambos años.
2.3.5 Análisis geoespacial:
Conversión de los datasets en objetos sf para el manejo de información geográfica.
Conversión de los datasets en objetos sf para el manejo de información geográfica (st_join).
Cálculo de densidades comerciales por kilómetro cuadrado y por habitante, utilizando datos de población y superficie.
2.3.6 Visualización de datos:
Generación de mapas temáticos de densidad, distribución y concentración utilizando ggplot2y ggspatial.
Creación de gráficos comparativos y tablas resumen para facilitar la interpretación.
Elaboración de mapas de calor y mallas de cuadrícula para analizar la distribución microespacial de la actividad comercial.
3 Resultados
3.1 Actividad comercial por distritos (2024)
library(tidyverse)library(janitor)
Warning: package 'janitor' was built under R version 4.4.3
library(dplyr)library(ggplot2)library(sf)
Warning: package 'sf' was built under R version 4.4.3
library(ggspatial)
Warning: package 'ggspatial' was built under R version 4.4.3
Consolidamos la data de los comercios del 2019 y 2024, usamos el comando “clean_names” para evitar posibles problemas al comparar datos a futuro.
Warning: One or more parsing issues, call `problems()` on your data frame for details,
e.g.:
dat <- vroom(...)
problems(dat)
comercios_19<-clean_names(comercios_19)
Obtenemos cual es el comercio más relevante de Barcelona el año 2024, obtenemos ésto viendo cual tiene más cantidad de locales. primero filtramos el campo codi_principal_activitat, tomando los valores iguales a 1. Esto debido a los que tienen valor 0 son locales sin actividad económica. Las actividades más importantes son, los restaurantes, Bares/cibercafés, Servicios a empresas y oficinas, Peluquerías y Tiendas de vestir.
Comparemos como las actividades más relevantes se comparan por distritos.
comercios_24 |>filter(codi_principal_activitat ==1,nom_activitat %in%c("Restaurants", "Bars / CIBERCAFÈ", "Serveis a les empreses i oficines"))|>group_by(nom_districte,nom_activitat)|>count()|>ggplot(aes(x=nom_districte,y=n,fill= nom_activitat))+geom_col(position ="dodge")+coord_flip()
3.2 Evolución de espacios de concentración comercial (2019–2024)
Como primer paso se realizara la LECTURA DE LOS DATOS
# A tibble: 68,024 × 49
id_global id_bcn_2016 codi_principal_activ…¹ nom_principal_activi…²
<chr> <dbl> <dbl> <chr>
1 5f158100-c0b8-45e2… 45538 0 Sense activitat Econò…
2 03a89603-7bb5-423f… 16649 0 Sense activitat Econò…
3 aad63dad-4969-4eff… 23980 0 Sense activitat Econò…
4 59832baf-4dd3-4fa4… NA 0 Sense activitat Econò…
5 e3794cd9-8191-4cb3… 26849 0 Sense activitat Econò…
6 3db1bda1-f434-4297… 29639 0 Sense activitat Econò…
7 510e1364-689f-4651… NA 0 Sense activitat Econò…
8 eafd6ba7-50a9-4da8… 26544 0 Sense activitat Econò…
9 d84dd3e6-8e8b-456b… 22661 0 Sense activitat Econò…
10 ac650075-b5f6-4d6d… 44615 0 Sense activitat Econò…
# ℹ 68,014 more rows
# ℹ abbreviated names: ¹codi_principal_activitat, ²nom_principal_activitat
# ℹ 45 more variables: codi_sector_activitat <dbl>, nom_sector_activitat <chr>,
# codi_grup_activitat <dbl>, nom_grup_activitat <chr>,
# codi_activitat_2022 <dbl>, nom_activitat <chr>, codi_activitat_2016 <chr>,
# nom_local <chr>, sn_oci_nocturn <chr>, sn_coworking <chr>,
# sn_servei_degustacio <chr>, sn_obert24h <chr>, sn_mixtura <chr>, …
seguidamente tendremos la Tabla de comercios 2019 en concentracion comercial con el cual podremos contar el número de comercios del 2019 de cada concentracion comercial con actividad con summarise() y filter() sobre comercio2019, y guardamos el resultado en num_comercios_CC_2019.Tambien lo pasamos a una tabla larga para poder graficarlo despues.
Tabla de comercios 2019 en concentracion comercial
Para despues realizar el grafico de barras de comercios 2019 en concentracion comercial, por lo que graficaremos la tabla anterior, un grafico de barras ayudaria “num_comercios_CC_2019_largo”
Grafico de barras de comercios 2019 en concentracion comercial
ggplot(num_comercios_CC_2019_largo, aes(x = tipo, y = cantidad)) +geom_bar(stat ="identity", fill ="steelblue") +geom_text(aes(label = cantidad), vjust =-0.5, size =4) +labs(title ="Cantidad de establecimientos en el año 2019",x ="Tipo de establecimiento",y ="Cantidad" ) +theme_minimal()
a continuacion desarrollaremos la tabla de comercios 2024 en concentracion comercial, que nos permitira contar el número de comercios del 2024 de cada concentracion comercial con actividad con summarise() y filter() sobre comercio2019, y guardamos el resultado en num_comercios_CC_2024.Tambien lo pasamos a una tabla larga para poder graficarlo despues.
Grafico de tabla de Comercios 2024 en concentracion comercial
Para desarrollar el objetivo deberemos graficar las barras de comercios 2024 en concentracion comercial, por ello graficaremos la tabla anterior, un grafico de barras ayudaria “num_comercios_CC_2024_largo”
Graficar las barras de comercios 2024 en concentracion comercial
ggplot(num_comercios_CC_2024_largo, aes(x = tipo, y = cantidad)) +geom_bar(stat ="identity", fill ="steelblue") +geom_text(aes(label = cantidad), vjust =-0.5, size =4) +labs(title ="Cantidad de establecimientos en el año 2019",x ="Tipo de establecimiento",y ="Cantidad" ) +theme_minimal()
Para finalizar realizaremos el grafico de barras de comercios 2019 y 2024 en concentracion comercial, el cual vendra de la tabla anterior, un grafico de barras ayudaria “num_comercios_CC_2024_largo”
Grafico de barras de comercios 2019 y 2024 en concentracion comercial
num_comercios_CC_2019_largo_año <- num_comercios_CC_2019_largo |>mutate(año ="2019")num_comercios_CC_2024_largo_año <- num_comercios_CC_2024_largo |>mutate(año ="2024")conteo_comparado <-bind_rows(num_comercios_CC_2019_largo_año, num_comercios_CC_2024_largo_año)ggplot(conteo_comparado, aes(x = tipo, y = cantidad, fill = año)) +geom_bar(stat ="identity", position =position_dodge(width =0.8)) +geom_text(aes(label = cantidad),position =position_dodge(width =0.8),vjust =-0.3,size =3.5 ) +labs(title ="Comparación de Establecimientos (2019 vs 2024)",x ="Tipo de Establecimiento",y ="Cantidad",fill ="Año" ) +theme_minimal()
3.3 Distribución geográfica de la actividad comercial (2024)
Empezamos creando un mapa de comercios de Barcelona. Para ello necesitamos:
Obtener un objeto sf con una columna geom con la posición de las fuentes.
A partir de este objeto, y del mapa bcn_districts, mostrar las fuentes de cada distrito.
Después mostraremos las fuentes de un distrito, identificando las fuentes que hay dentro de éste.
Creando datos geográficos
Empezamos leyendo el archivo con datos geográficos de los distritos de Barcelona:
Para transformar las coordenadas de los comercios en un objeto geográfico usaremos st_as_sf(). Luego le asignaremos la proyección compatible con los mapas que tenemos disponibles usando st_set_crs().
Simple feature collection with 68024 features and 47 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: 2.088023 ymin: 41.34512 xmax: 2.220819 ymax: 41.46653
Geodetic CRS: WGS 84
# A tibble: 68,024 × 48
id_global id_bcn_2016 codi_principal_activ…¹ nom_principal_activi…²
* <chr> <dbl> <dbl> <chr>
1 5f158100-c0b8-45e2… 45538 0 Sense activitat Econò…
2 03a89603-7bb5-423f… 16649 0 Sense activitat Econò…
3 aad63dad-4969-4eff… 23980 0 Sense activitat Econò…
4 59832baf-4dd3-4fa4… NA 0 Sense activitat Econò…
5 e3794cd9-8191-4cb3… 26849 0 Sense activitat Econò…
6 3db1bda1-f434-4297… 29639 0 Sense activitat Econò…
7 510e1364-689f-4651… NA 0 Sense activitat Econò…
8 eafd6ba7-50a9-4da8… 26544 0 Sense activitat Econò…
9 d84dd3e6-8e8b-456b… 22661 0 Sense activitat Econò…
10 ac650075-b5f6-4d6d… 44615 0 Sense activitat Econò…
# ℹ 68,014 more rows
# ℹ abbreviated names: ¹codi_principal_activitat, ²nom_principal_activitat
# ℹ 44 more variables: codi_sector_activitat <dbl>, nom_sector_activitat <chr>,
# codi_grup_activitat <dbl>, nom_grup_activitat <chr>,
# codi_activitat_2022 <dbl>, nom_activitat <chr>, codi_activitat_2016 <chr>,
# nom_local <chr>, sn_oci_nocturn <chr>, sn_coworking <chr>,
# sn_servei_degustacio <chr>, sn_obert24h <chr>, sn_mixtura <chr>, …
Mapa de establecimientos 2024
Obtenemos el mapa de comercios 2024 creando primero el mapa de Barcelona y luego dibujando los puntos. El orden importa si queremos que se vean los puntos. En los dos casos usamos geom_sf(), pero con datos distintos.Aqui hay los comercios con actividad.
Si queremos saber el distrito en que está cada comercio 2024, hemos de hacer un join espacial con st_join(). En este caso, queremos llevar la columna n_distri de bcn_districts a comercios_2024_sf, guardando el resultado en comercio2024_distrito.
Podemos usar la nueva columna n_distri como argumento de color en el mappingaes() para mostrar los comercios con actividad de cada distrito de un color diferente.
Podemos usar la información de comercio2024_distrito para obtener indicadores del comercio en cada distrito. El número absoluto de comercio se puede escalar a partir de:
El área de cada distrito, que podemos obatener con st_area() (aunque el mapa de Barcelona ya tiene esa información).
La población de cada distrito, obtenida como suma de las columnas homes y dones.
Comercios 2024 por kilómetro cuadrado
Contamos el número de comercios del 2024 de cada distrito(con actividad) con group_by() y count() sobre comercio2024_distrito, y guardamos el resultado en num_comercios_2024.
Ya podemos obtener cada uno de los mapas. He definido los colores a mostrar con diferentes paletas de scale_fill_brewer() y he usado annotation_scale() y annotation_north_arrow() para añadir contexto al mapa.
Ahora ya podemos representar la malla. Como es un conjunto de polígonos, le hemos asignado una transparencia alpha baja para que pueda verse el mapa de Barcelona bajo la malla.
Ahora ya podemos usar el número de comercios n como fill del aes() en la malla. Cada cuadrado de la malla tendrá un color definido por el número de comercios que hay en él.
Usamos una escala de gradiente scale_fill_gradient() definiendo el blanco como color para cero restaurants y el verde para el máximo número de comercios.
Obtenemos el mapa de restaurants 2024 creando primero el mapa de Barcelona y luego dibujando los puntos. El orden importa si queremos que se vean los puntos. En los dos casos usamos geom_sf(), pero con datos distintos.Aqui hay los comercios con actividad.
Si queremos saber el distrito en que está cada restaurant 2024, hemos de hacer un join espacial con st_join(). En este caso, queremos llevar la columna n_distri de bcn_districts a comercios_2024_sf, guardando el resultado en comercio2024_distrito.
Podemos usar la nueva columna n_distri como argumento de color en el mappingaes() para mostrar los restaurants con actividad de cada distrito de un color diferente.
Podemos usar la información de restaurants2024_distrito para obtener indicadores del comercio en cada distrito. El número absoluto de comercio se puede escalar a partir de:
El área de cada distrito, que podemos obatener con st_area() (aunque el mapa de Barcelona ya tiene esa información).
La población de cada distrito, obtenida como suma de las columnas homes y dones.
Comercios 2024 por kilómetro cuadrado
Contamos el número de comercios del 2024 de cada distrito(con actividad) con group_by() y count() sobre comercio2024_distrito, y guardamos el resultado en num_comercios_2024.
Ya podemos obtener cada uno de los mapas. He definido los colores a mostrar con diferentes paletas de scale_fill_brewer() y he usado annotation_scale() y annotation_north_arrow() para añadir contexto al mapa.
Ahora ya podemos usar el número de restaurants n como fill del aes() en la malla. Cada cuadrado de la malla tendrá un color definido por el número de restaurants que hay en él.
Usamos una escala de gradiente scale_fill_gradient() definiendo el blanco como color para cero restaurants y el verde para el máximo número de restaurants.
En el año 2024, se identificó que las actividades comerciales más representativas en Barcelona son los restaurants, bares/cibercafés, y los servicios a empresas y oficinas. Estas actividades presentan una mayor concentración en distritos como Eixample, Sant Martí y Ciutat Vella, lo que evidencia una fuerte centralización de la actividad económica en zonas urbanas de alta densidad y flujo poblacional.
Entre 2019 y 2024 se observa una disminución general en el número de establecimientos en espacios de concentración comercial, con especial impacto en las galerías y centros comerciales, probablemente como consecuencia de la pandemia. Sin embargo, algunos mercados y ejes comerciales han mostrado resiliencia, manteniendo o incluso aumentando su actividad, lo cual sugiere una adaptación más ágil a los cambios del entorno.
El análisis geoespacial muestra que las zonas de mayor densidad comercial en 2024 se concentran principalmente en el centro de la ciudad, especialmente en distritos como Eixample y Ciutat Vella. En contraste, las áreas periféricas presentan una menor densidad, lo que revela una desigual distribución territorial del comercio y pone en evidencia la necesidad de políticas que fomenten una mayor descentralización de la actividad comercial.