Datos bancos vía pública Valencia
Input
Para llevar a cabo nuestro trabajo, utilizaremos los datos de Bancos vía pública, los cuales se encuentran disponibles en el repositorio de datos abiertos del Ayuntamiento de Valencia. Este portal ofrece una amplia variedad de conjuntos de datos relacionados con la ciudad, abarcando temáticas como movilidad, medio ambiente, urbanismo y servicios municipales, entre otros. En nuestro caso, el conjunto de datos específico se encuentra en el apartado de urbanismo. La base de datos que utilizaremos proporciona información en tiempo real sobre los bancos situados en la vía pública en Valencia.
- ÁMBITO: Municipio
- MODIFICADO: 15 de marzo de 2025 0:01
- licencia: Enlace
- TEMA: Urbanismo
- PUBLICADOR: Ayuntamiento de Valencia
Descripción
Cargamos las librerias:
Leemos el conjunto de datos:
datos <- sf::st_read("data/000142/bancs-en-via-publica-bancos-en-via-publica.shp")
Reading layer `bancs-en-via-publica-bancos-en-via-publica' from data source
`C:\Users\scorp\OneDrive - Universitat de València\01 PROFESOR\06 Innovación Educativa\2023 2024\03 Web\datasets\data\000142\bancs-en-via-publica-bancos-en-via-publica.shp'
using driver `ESRI Shapefile'
Simple feature collection with 5959 features and 8 fields
Geometry type: POINT
Dimension: XY
Bounding box: xmin: -0.4252023 ymin: 39.27908 xmax: -0.2761254 ymax: 39.5411
Geodetic CRS: WGS 84
Tenemos un objeto de tipo sf con 5959 observaciones y 9 variables:
class(datos)
[1] "sf" "data.frame"
dim(datos)
[1] 5959 9
Analizamos si hay valores na:
Gráficamos los bancos para analizar si hay algunos fuera del límite o existe algún error visible.
ggplot() +
ggspatial::annotation_map_tile(type="cartolight", zoom = 12) +
geom_sf(data =datos , color = "#238443", size = 0.5, alpha=0.5) +
theme_void()
Zoom: 12
Tras analizar el gráfico, no se ha detectado ninguna anomalía ni puntos fuera del área de Valencia ni ningún valor repetido. A continuación, procederemos a visualizar una selección de distritos junto con la cantidad de bancos presentes en cada uno.
df <- as.data.frame(table(datos$modelo))
parte1 <- df[1:(nrow(df) / 4), ]
parte2 <- df[((nrow(df) / 4) + 1):(nrow(df) / 2), ]
parte3 <- df[(((nrow(df) / 2) + 1):(3 * nrow(df) / 4)), ]
parte4 <- df[((3 * nrow(df) / 4) + 1):nrow(df), ]
df_final <- cbind(parte1, parte2, parte3, parte4)
colnames(df_final) <- c("Var1_1", "Freq_1", "Var1_2", "Freq_2", "Var1_3", "Freq_3", "Var1_4", "Freq_4")
# Visualizar el dataframe de municipios únicos
knitr::kable(head(df_final,20), format = "html")
Var1_1 | Freq_1 | Var1_2 | Freq_2 | Var1_3 | Freq_3 | Var1_4 | Freq_4 |
---|---|---|---|---|---|---|---|
apoyo isquiatico | 9 | banco hormigón | 4 | MEDITERRANEO DOBLE | 6 | ROMANDO | 1 |
apoyo isquiático | 4 | BANCO ISQUIATICO | 4 | MEDITERRANEO PEQUEÑO | 5 | romanico | 4 |
asiento banco UNIVERSE | 2 | Banco Kube UM372 de Benito | 4 | mediterrano | 5 | romantico | 14 |
Asiento banco UNIVERSE | 5 | Banco Kube UM372 de BENITO | 2 | MEDITTERANEO | 1 | Romantico | 3 |
Asiento Banco UNIVERSE | 1 | BANCO NEOBARCIANO | 1 | meiterraneo | 1 | ROMANTICO | 284 |
asiento box | 1 | BANCO NEOBARCINO | 48 | METAL | 43 | romántico | 2 |
Asiento silla UNIVERSE | 1 | banco piedra | 28 | METALICO | 40 | Romántico | 1 |
banco box | 5 | banco polimero reciclado | 1 | METÁLICO | 2 | SILLA | 8 |
Banco box | 2 | Banco polimero reciclado | 3 | MODELO 1 TABLA | 1 | silla en polimero reciclado | 3 |
Banco Box | 1 | banco polímero reciclado | 1 | MODO08-1800 | 16 | Silla Kube Ficus UM348S DE BENITO | 6 |
Banco BOX | 6 | BANCO TAPONES RECICLADO | 1 | MRDITERRANEO | 1 | Silla Kube UM372S DE BENITO | 3 |
BANCO BOX | 1 | BANCO TAPONES RECICLADOS | 31 | NEO BARCINO | 1 | SILLA MEDITERRANEA | 1 |
banco de hormigón | 7 | CASCARA DE ARROZ | 3 | neobarcino | 24 | SILLA MEDITERRANEO | 94 |
Banco de hormigón | 2 | CÁSCARA DE ARROZ | 1 | Neobarcino | 9 | silla polimero reciclado | 6 |
banco de madera con respaldo y apoyabrazos | 2 | DESCONOCIDO | 1 | NEOBARCINO | 219 | Silla polimero reciclado | 1 |
Banco de madera con respaldo y apoyabrazos | 2 | ISQUIATICO | 6 | NEOBARCOMP | 1 | silla polímero reciclado | 1 |
banco de piedra | 67 | madera | 147 | neoclasico | 1 | silla UNIVERSE | 2 |
BANCO DE PIEDRA | 2 | Madera | 1 | OTROS | 103 | Silla UNIVERSE | 1 |
BANCO DE TAPONES RECICLADO | 1 | MADERA | 236 | piedra | 61 | SILLA MEDITERRANEO | 1 |
banco de tapones reciclados | 1 | MADERO | 1 | PIEDRA | 679 | sillón madera | 12 |
Número de nombres diferentes en la variable modelo
n_distinct(datos$modelo)
[1] 113
Despúes de analizar la tabla con el modelo del banco se ha observado varios casos en los que el mismo modelo de banco está escrito de diversas maneras aunque sea un el mismo modelo y tenemos hasta un total de 113 modelos diferentes.
Tratamiento
Hemos identificado diversas variaciones en los nombres de los modelos de bancos, incluyendo diferencias en el uso de mayúsculas, minúsculas y nomenclaturas distintas para un mismo modelo. Estas inconsistencias pueden dificultar la identificación y el análisis de los datos, por lo que procederemos a estandarizar los nombres para garantizar una mayor coherencia en la base de datos.
vamos a empezar comprobando todos los tipos de modelos que aparecen en la base de datos para organizarlo y clasificarlos antes de empezar a modificarlos.
A continuación se presenta la tabla con las variaciones de los nombres que se encuentran en la columna modelo
y cómo se organizarán para obtener un formato estandarizado. Las variaciones que corresponden a la misma categoría han sido agrupadas en el mismo apartado de la tabla.
Variaciones de Nombre | Nombre Estandarizado |
---|---|
banco hormigón, banco de hormigón | HORMIGÓN |
mediterrano, mediterraneo, mediterráneo, MEDITERRANEO | MEDITERRANEO |
romantico, ROMANTICO, romantico | ROMANTICO |
piedra, banco de piedra, banco piedra | PIEDRA |
Silla mediterraneo, silla mediterranea, SILLA MEDITERRANEA, silla mediterranea | MEDITERRANEO |
banco polimero reciclado, Banco polimero reciclado, banco en polimero reciclado | POLÍMERO RECICLADO |
banco box, Banco BOX | BANCO BOX |
banco de madera, banco madera, madera | MADERA |
resina imitación madera, resina imitacion madera | RESINA IMITACIÓN MADERA |
banco neobarcino, neobarcino | NEOBARCINO |
desconocido | OTROS |
silla en polimero reciclado | POLÍMERO RECICLADO |
silla UNIVERSE, asiento silla UNIVERSE | UNIVERSE |
tarjetes crédito, tarjetes de crédito | TARJETAS DE CRÉDITO |
banco de tapones reciclados, Banco tapones reciclados | TAPONES RECICLADOS |
banco ecologico, Banco ecológico | ECOLOGICO |
banco de madera con respaldo y apoyabrazos | MADERA CON RESPALDO |
silla, silla polimero reciclado, banco polimero reciclado | POLÍMERO RECICLADO |
banco de piedra, banco piedra | PIEDRA |
Una vez sabemos como vamos a clasificar los datos, los modificamos.
datos_1<- datos %>%
mutate(modelo = str_trim(modelo),
modelo = toupper(modelo),
modelo = case_when(
str_detect(modelo, "HORMIGÓN") ~ "HORMIGÓN",
str_detect(modelo, "MEDITERRANEO|MEDITERRANEA|MEDITERRÁNEO|MEDITERRANEO PEQUEÑO") ~ "MEDITERRANEO",
str_detect(modelo, "ROMÁNTICO|ROMANTICO") ~ "ROMANTICO",
str_detect(modelo, "PIEDRA") ~ "PIEDRA",
str_detect(modelo, "NEOBARCINO|NEOBARCOMP") ~ "NEOBARCINO",
str_detect(modelo, "SILLA") ~ "SILLA",
str_detect(modelo, "BANCO") ~ "BANCO",
str_detect(modelo, "TARJETAS DE CRÉDITO") ~ "TARJETAS DE CRÉDITO",
TRUE ~ "OTROS"
))
Output
Hemos obtenido un nuevo objeto sf con 5959 observaciones y 9 variables pero con la variable modelo bien clasificada.
class(datos_1)
[1] "sf" "data.frame"
nrow(datos_1)
[1] 5959
length(datos_1)
[1] 9
n_distinct(datos_1$modelo)
[1] 9
unique(datos_1$modelo)
[1] "HORMIGÓN" "OTROS" "MEDITERRANEO"
[4] "PIEDRA" "ROMANTICO" "BANCO"
[7] "SILLA" "TARJETAS DE CRÉDITO" "NEOBARCINO"
Podemos observar una reducción significativa en la cantidad de nombres de modelos. En el conjunto de datos original, había 113 nombres distintos, mientras que tras la limpieza, hemos logrado reducirlos a solo 9, consolidando las variaciones y mejorando la coherencia de la base de datos.
sf::st_write(datos_1, "bancos_valencia.gpkg")
El fichero generado con este procedimiento se puede descargar de aquí.
Proyecto de Innovación Educativa Emergente (PIEE-2737007)