Skip to content

Instantly share code, notes, and snippets.

@ferblape
Last active April 13, 2018 13:57
Show Gist options
  • Save ferblape/3ca5a5ea28d560c669eb9d5709decd07 to your computer and use it in GitHub Desktop.
Save ferblape/3ca5a5ea28d560c669eb9d5709decd07 to your computer and use it in GitHub Desktop.
Análisis comercios de Madrid
require(readr)
library(dplyr)
require(ngram)
setwd('/Users/fernando/proyectos/exploratory-data-analysis/little-experiments/madrid-comercios-locales-actividades')
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
# Censo distritos
censo_file_name <- "censo-distritos.csv"
df_censo <- read_delim(censo_file_name, ',') %>%
group_by(Distrito) %>%
summarize(sum = sum(Total))
# Datos actividad comercial
file_name <- "OPEN DATA Locales-Epigrafes201802.csv"
df <- read_delim(file_name, ';') %>%
select(desc_situacion_local,id_local,desc_distrito_local,desc_barrio_local,clase_vial_acceso,desc_vial_acceso,rotulo,desc_seccion, desc_division, desc_epigrafe) %>%
filter(!is.na(desc_seccion) & desc_situacion_local == "Abierto") %>%
mutate(desc_distrito_local = trim(desc_distrito_local))
View(df)
length(unique(df$id_local))
# En Madrid, a fecha de abril 2018, hay 103.681 locales registrados con activad comercial activa. Por desgracia este conjunto de datos se ofrece actualizado cada mes y no tiene histórico, porque sería muy interesante analizar
# cómo ha variado esta cifra en el tiempo
## Videoclubs
videoclubs <- filter(df, desc_epigrafe == "VIDEOCLUB")
nrow(videoclubs)
table(videoclubs$desc_distrito_local)
# Hay todavía 54 videoclubs en activo. Los distritos Centro y Chmmartín son los que más tienen 6, seguidos de Chamberí y Tetuán con 5
## Farmacias
farm <- filter(df, desc_epigrafe == "FARMACIA")
nrow(farm)
table(farm$desc_distrito_local)
# Hay 1859 farmacias
farm_by_dist <- farm %>%
group_by(desc_distrito_local) %>%
summarize(count = n()) %>%
inner_join(df_censo, by = c("desc_distrito_local" = "Distrito")) %>%
mutate(n_per_person = sum/count) %>%
arrange(n_per_person)
farm_by_dist
top_n(farm_by_dist, 3)
# Si tuviera que abrir una nueva farmacia lo haría en Vicálvaro, Vallecas o Villaverde.
# Vicálvaro tiene 1 farmacia para cada 2.736 habitantes, mientras que en el centro hay una farmacia para cada 1.140 habitantes
## peluquerias
pelus <- filter(df, desc_epigrafe == "SERVICIO DE PELUQUERIA")
nrow(pelus)
table(pelus$desc_distrito_local)
pelus_by_dist <- pelus %>%
group_by(desc_distrito_local) %>%
summarize(count = n()) %>%
inner_join(df_censo, by = c("desc_distrito_local" = "Distrito")) %>%
mutate(n_per_person = sum/count) %>%
arrange(n_per_person)
top_n(pelus_by_dist, 3)
top_n(pelus_by_dist, -3)
## Bancos
banks <- filter(df, desc_epigrafe == "INTERMEDIACION MONETARIA: BANCOS, CAJAS DE AHORRO")
nrow(banks)
table(banks$desc_distrito_local)
banks_by_dist <- banks %>%
group_by(desc_distrito_local) %>%
summarize(count = n()) %>%
inner_join(df_censo, by = c("desc_distrito_local" = "Distrito")) %>%
mutate(n_per_person = sum/count) %>%
arrange(n_per_person)
top_n(banks_by_dist, 3)
top_n(banks_by_dist, -3)
# De los 2.291 bancos, el distrito de Salmanca es el que más tiene, con 234 y Vicálvaro el que menos, con 23.
# En Bancos por persona, Vicálvaro tiene un banco para cada 3000 personas, mientras que en el distrito de Salamanca
# hay un banco para cada 622 personas.
## Inmobiliarias
inmo <- filter(df, desc_epigrafe == "ACTIVIDADES INMOBILIARIAS (COMPRAVENTA, ALQUILER, AGENTES PROPIEDAD)")
nrow(inmo)
table(inmo$desc_distrito_local)
inmo_by_dist <- banks %>%
group_by(desc_distrito_local) %>%
summarize(count = n()) %>%
inner_join(df_censo, by = c("desc_distrito_local" = "Distrito")) %>%
mutate(n_per_person = sum/count) %>%
arrange(n_per_person)
top_n(inmo_by_dist, 3)
top_n(inmo_by_dist, -3)
## Calles
sts <- df %>%
distinct(id_local, .keep_all = TRUE) %>%
group_by(desc_vial_acceso) %>%
summarize(count = n()) %>%
arrange(desc(count))
sts
# A nadie le sorprenderá que Alcalá (1.397) y Bravo Murillo (1.024) sean las calles con más comercios de Madrid.
# Cada zona tiene su calle principal de comercios: Monforte de Lemos, Antonio López, Embajadores, Serrano, General Ricardos...
## Epigrafes
epis <- df %>%
group_by(desc_epigrafe) %>%
summarize(count = n()) %>%
arrange(desc(count))
epis
View(epis)
View(top_n(epis, 30))
# Hay en total 5.040 locales bajo el epígrafe peluquería y 4.585 bajo el de comercio de prendas de vestir.
# Los bares y restaurantes están dividos en varios epígrafes (ej Bar restaurante, Bar con cocina, Bar sin cocina, Taberna). Si se juntan todos se ve que efectivamente Madrid es una ciudad de bares.
# Como curiosidad hay 8 ciber-cafes dados de alta, 22 sexshops y 54 videoclubs
wc <- data.frame(table(unlist(strsplit(tolower(df$rotulo), " ")))) %>% arrange(desc(Freq))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment