Last active
April 13, 2018 13:57
-
-
Save ferblape/3ca5a5ea28d560c669eb9d5709decd07 to your computer and use it in GitHub Desktop.
Análisis comercios de Madrid
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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