Introducción

En la dinámica industria inmobiliaria de Cali, Colombia, destaca la agencia de bienes raíces B&C (Bines y Casas). Fundada por Sandra Milena hace una década, la empresa ha emergido como un actor influyente en un mercado en constante cambio, contando actualmente con ocho agentes de bienes raíces comprometidos y dedicados.

El mercado de bienes raíces en Cali ha experimentado un crecimiento significativo en los últimos años, impulsado por diversos factores como el aumento de la población, la inversión extranjera directa y la expansión de nuevos proyectos inmobiliarios. Durante 2021, las transacciones en este sector alcanzaron los $6700 millones, seguidas por $6100 millones en 2022. Esta tendencia ascendente brinda optimismo y perspectivas prometedoras para el desarrollo económico regional.

Con una visión estratégica, B&C ha construido una valiosa base de datos que abarca detalles cruciales sobre propiedades residenciales en Cali. Desde precios y ubicaciones hasta características específicas y datos de ventas, esta información va más allá de un simple registro. El análisis estadístico de estos datos podría proporcionar una comprensión profunda y enriquecedora para la empresa.

Este informe estadístico se centra en aspectos clave, incluyendo:

Variaciones de Precios en Diferentes Zonas: Analiza las fluctuaciones de precios en distintas áreas de Cali, lo que brinda una comprensión detallada de las dinámicas del mercado inmobiliario local.

Tipos de Viviendas Más Demandados: Revela los tipos de viviendas que predominan en el mercado actual, arrojando luz sobre las preferencias y necesidades de los compradores.

Características más Buscadas: Desglosa las características específicas que los compradores buscan en las propiedades, desde comodidades y tamaños hasta detalles especiales que pueden influir en su elección.

Esta información, analizada de manera estratégica, posee un potencial significativo para orientar las decisiones de B&C. Al comprender estas tendencias y patrones, la agencia puede:

Definir su Nicho de Mercado: Alinear sus estrategias con las preferencias de los compradores y adaptarse para atender de manera especializada a un segmento específico de la población.

Desarrollar Estrategias de Marketing Efectivas: Diseñar campañas publicitarias y enfoques promocionales en sintonía con las tendencias actuales del mercado.

Establecer Precios Competitivos: Determinar precios de venta acordes con las expectativas y necesidades de los compradores en diferentes áreas de la ciudad.

Ofrecer un Servicio Personalizado: Conocer las preferencias de los compradores permite a B&C brindar un servicio personalizado y adaptado a las necesidades de cada cliente.

B&C busca, a través de un análisis descriptivo profundo, desvelar las corrientes subyacentes y patrones ocultos que configuran el mercado inmobiliario de Cali. Con este enfoque estratégico, la empresa busca potenciar su competitividad, mejorar su comprensión del mercado y, en última instancia, ofrecer soluciones más eficientes y satisfactorias tanto para los compradores como los vendedores en este sector en constante evolución.

Metodología

La metodología de análisis exploratorio de datos adoptada en este estudio es una aproximación fundamental para comprender y revelar patrones inherentes y características relevantes presentes en el conjunto de datos recopilado. Este enfoque se basa en un proceso sistemático de examinar, visualizar y resumir la información contenida en los datos sin preconcepciones previas. El análisis exploratorio busca identificar posibles anomalías, tendencias, relaciones y distribuciones subyacentes en los datos, permitiendo una comprensión más profunda antes de aplicar técnicas analíticas más avanzadas. Mediante la utilización de gráficos, tablas, medidas resumen y herramientas estadísticas, se pretende desentrañar información valiosa que puede guiar la toma de decisiones estratégicas y enriquecer la interpretación de los resultados.

Resultados

glimpse(Vivienda)
## Rows: 8,330
## Columns: 13
## $ id        <int> 8312, 8311, 8307, 8296, 8297, 8298, 8299, 8300, 8286, 8287, …
## $ zona      <chr> "Zona Oeste", "Zona Oeste", "Zona Oeste", "Zona Sur", "Zona …
## $ piso      <int> 4, 1, NA, 2, NA, NA, 2, NA, NA, 2, 1, NA, 6, NA, 2, 8, NA, 6…
## $ estrato   <int> 6, 6, 5, 3, 5, 5, 6, 5, 5, 5, 5, 3, 6, 3, 5, 6, 5, 6, 6, 6, …
## $ preciom   <int> 1300, 480, 1200, 220, 330, 1350, 305, 480, 275, 285, 310, 17…
## $ areaconst <dbl> 318, 300, 800, 150, 112, 390, 125, 280, 74, 120, 166, 155, 1…
## $ parquea   <int> 2, 1, 4, 1, 2, 8, 2, 4, 1, 2, 2, NA, 2, NA, 1, 2, 2, 2, 4, 1…
## $ banios    <int> 4, 4, 7, 2, 4, 10, 3, 4, 2, 4, 4, 4, 3, 2, 2, 3, 3, 5, 7, 1,…
## $ habitac   <int> 2, 4, 5, 4, 3, 10, 3, 4, 3, 3, 3, 6, 3, 3, 2, 4, 3, 4, 3, 2,…
## $ tipo      <chr> "Apartamento", "Casa", "Casa", "Casa", "Casa", "Casa", "Apar…
## $ barrio    <chr> "arboleda", "normandía", "miraflores", "el guabal", "bella s…
## $ longitud  <dbl> -76576, -76571, -76568, -76565, -76565, -76565, -76565, -765…
## $ latitud   <dbl> 3454.00000, 3454.00000, 3455.00000, 3417.00000, 3408.00000, …
summary(Vivienda$id)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##       1    2082    4164    4164    6246    8319       3
summary(Vivienda$piso)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   2.000   3.000   3.772   5.000  12.000    2641

En el caso de los pisos de la vivienda, hay una gran cantidad de valores en NA puede ser por la gran cantidad de viviendas que solo puentan con un piso

summary(Vivienda$estrato)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   3.000   4.000   5.000   4.634   5.000   6.000       3
summary(Vivienda$preciom)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##    58.0   220.0   330.0   434.2   540.0  1999.0       2
summary(Vivienda$areaconst)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##      30      80     123     175     229    1745       3
summary(Vivienda$parquea)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   1.000   1.000   2.000   1.836   2.000  10.000    1606

En el caso del parqueadero de la vivienda, hay una gran cantidad de valores en NA puede ser por la gran cantidad de viviendas que no cuentan con parqueadero sin embargo no podemos asumir que estos valores son cero

summary(Vivienda$banios)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   2.000   3.000   3.112   4.000  10.000       3

Si bien hay datos que aparecen en cero y no tiene sentido no tener baño en una vivienda. Podemos asumir que son tipos de viviendas como las que se ven actualmente como en las grandes ciudades, donde hay apartamentos que comparten zonas comunes como pueden ser cocina, baños y lavandería

summary(Vivienda$habitac)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   3.000   3.000   3.605   4.000  10.000       3

Igual que en el caso de los baños, hay apartamentos que son monoambiente, por lo cual el dato cero tiene sentido

barrios2 <- tolower(trimws(Vivienda$barrio))
barrios2 <- gsub("[^[:alnum:] ]", "", barrios2)
wordcloud(words = barrios2, min.freq = 10)
## Warning in tm_map.SimpleCorpus(corpus, tm::removePunctuation): transformation
## drops documents
## Warning in tm_map.SimpleCorpus(corpus, function(x) tm::removeWords(x,
## tm::stopwords())): transformation drops documents

Si bien la información de los barrios no viene diligenciada correctamente y no contamos con un experto que conozca los barrios de Cali para normalizar la data, si podemos asumir que los barrios Pance, Jardín, Canei, Teresita, Lili y Flora son barrios que se repiten y en los cuales la inmobilaria puede prestar principal atención. Para continuar con la información geográfica, haremos una revisión de zona

# Hacer el conteo por categorías para la variable "zona"
conteo_por_zona <- Vivienda %>%
  group_by(zona) %>%
  summarize(Conteo = n())
print(conteo_por_zona)
## # A tibble: 6 × 2
##   zona         Conteo
##   <chr>         <int>
## 1 Zona Centro     124
## 2 Zona Norte     1922
## 3 Zona Oeste     1204
## 4 Zona Oriente    351
## 5 Zona Sur       4726
## 6 <NA>              3
# Calcular la media del precio por zona
media_precio_por_zona <- Vivienda %>%
  group_by(zona) %>%
  summarize(Media_Precio = mean(preciom, na.rm = TRUE))
print(media_precio_por_zona)
## # A tibble: 6 × 2
##   zona         Media_Precio
##   <chr>               <dbl>
## 1 Zona Centro          310.
## 2 Zona Norte           346.
## 3 Zona Oeste           679.
## 4 Zona Oriente         229.
## 5 Zona Sur             427.
## 6 <NA>                 330
# Calcular la mediana del precio por zona
mediana_precio_por_zona <- Vivienda %>%
  group_by(zona) %>%
  summarize(Mediana_Precio = median(preciom, na.rm = TRUE))
print(mediana_precio_por_zona)
## # A tibble: 6 × 2
##   zona         Mediana_Precio
##   <chr>                 <dbl>
## 1 Zona Centro             297
## 2 Zona Norte              300
## 3 Zona Oeste              580
## 4 Zona Oriente            210
## 5 Zona Sur                320
## 6 <NA>                    330
## Warning: Removed 2 rows containing non-finite values (`stat_boxplot()`).

Teniendo en cuenta como se encuentran los precios por zona y que hay una gran de datos atipicos, se decide no solo usar el promedio sino que también ver gráficamente el diagrama de cajas y por último la mediana, luego de tener todo esto en cuenta la mejor forma de categorizar cada una de las zonas por precio La mejor distribución sería está:

Mejores_zonas <- Vivienda %>%
  group_by(zona) %>%
  summarize(Mediana_Precio = median(preciom)) %>%
  arrange(desc(Mediana_Precio))
print(Mejores_zonas)
## # A tibble: 6 × 2
##   zona         Mediana_Precio
##   <chr>                 <dbl>
## 1 Zona Oeste              580
## 2 Zona Sur                320
## 3 Zona Norte              300
## 4 Zona Centro             297
## 5 Zona Oriente            210
## 6 <NA>                     NA
#Arreglar la variable tipo
Vivienda$tipo <- tolower(Vivienda$tipo)
Vivienda$tipo <- gsub("apto", "apartamento", Vivienda$tipo)

# Conteo por tipo de vivienda más vendida
conteo_por_tipo <- Vivienda %>%
  count(tipo)
print(conteo_por_tipo)
##          tipo    n
## 1 apartamento 5106
## 2        casa 3221
## 3        <NA>    3

Los tipos de propiedades que más se venden en Cali son apartamentos

cuartiles_areas <- quantile(Vivienda$areaconst, probs = c(0, 0.25, 0.5, 0.75, 1), na.rm = TRUE)
print(cuartiles_areas)
##   0%  25%  50%  75% 100% 
##   30   80  123  229 1745
#Categorizar la variable de area
Vivienda <- Vivienda %>%
  mutate(Area_Categorizada = cut(areaconst, breaks = cuartiles_areas, labels = c("0-80","81-123", "124-229", "230-"), include.lowest = TRUE))
##print(Vivienda$Area_Categorizada)

# Organizar y calcular el conteo de características más buscadas
caracteristicas_buscadas <- Vivienda %>%
  group_by(piso, estrato, Area_Categorizada, parquea, banios, habitac) %>%
  summarize(Conteo = n()) %>%
  arrange(desc(Conteo))
## `summarise()` has grouped output by 'piso', 'estrato', 'Area_Categorizada',
## 'parquea', 'banios'. You can override using the `.groups` argument.
print(caracteristicas_buscadas)
## # A tibble: 2,829 × 7
## # Groups:   piso, estrato, Area_Categorizada, parquea, banios [1,529]
##     piso estrato Area_Categorizada parquea banios habitac Conteo
##    <int>   <int> <fct>               <int>  <int>   <int>  <int>
##  1    NA       4 0-80                    1      2       3     97
##  2    NA       5 81-123                  1      2       3     66
##  3     5       4 0-80                    1      2       3     54
##  4     2       4 0-80                    1      2       3     51
##  5     3       4 0-80                    1      2       3     51
##  6    NA       3 0-80                   NA      1       3     51
##  7    NA       3 0-80                   NA      2       3     51
##  8    NA       6 124-229                 2      4       3     51
##  9    NA       5 0-80                    1      2       3     49
## 10    NA       4 0-80                   NA      2       3     48
## # ℹ 2,819 more rows
#Al tener tantas variables vemos que  la frecuencia absoluta no nos ayuda mucho

pisoc <- Vivienda %>%
  group_by(piso) %>%
  summarize(Conteo = n()) %>%
  arrange(desc(Conteo))
print(pisoc )
## # A tibble: 13 × 2
##     piso Conteo
##    <int>  <int>
##  1    NA   2641
##  2     2   1450
##  3     3   1097
##  4     1    861
##  5     4    607
##  6     5    568
##  7     6    245
##  8     8    211
##  9     7    207
## 10     9    146
## 11    10    130
## 12    11     84
## 13    12     83

Con la información disponible, y teniendo encuenta que en esta medida están incluidas viviendas como las casas, las cuales tienden a tener menos pisos, se puede interpretar que la gente prefiere vivir en pisos bajos, del 1-5 que en los pisos más altos.

estratoc <- Vivienda %>%
  group_by(estrato) %>%
  summarize(Conteo = n()) %>%
  arrange(desc(Conteo))
print(estratoc)
## # A tibble: 5 × 2
##   estrato Conteo
##     <int>  <int>
## 1       5   2751
## 2       4   2131
## 3       6   1992
## 4       3   1453
## 5      NA      3

La variable estrato no nos da mucha información ya que todos los datos se concentran en estratos iguales o superiores al 3.

Area_Categorizadac <- Vivienda %>%
  group_by(Area_Categorizada) %>%
  summarize(Conteo = n()) %>%
  arrange(desc(Conteo))
##print(Area_Categorizadac)

De la variable del área de los inmuebles, vemos que la gente prefiere espacios o pequeños (0-80 mtrs)o grandes (124-229) esto se puede dar debido a los tamaños de las familias, ya que por ejemplo parejas o personas que viven solas buscarán espacios pequeños, mientras que familias de 4 o 5 probablemente busquen espacios grandes. Mientras que los apartamentos medianos (81-123) se quedan muy pequeños para las familias y muy grandes para parejas y personas que viven solas. Del mismo modo, los inmubles muy grandes (230-) es difícil encontrar quien pueda comprarlos y aproveche tanto espacio. Por lo que la recomendación es que los inmuebles que más se venden son los de menos de 230 metros, los cuales acumulan el 75% del mercado.

parqueac <- Vivienda %>%
  group_by(parquea) %>%
  summarize(Conteo = n()) %>%
  arrange(desc(Conteo))
print(parqueac )
## # A tibble: 11 × 2
##    parquea Conteo
##      <int>  <int>
##  1       1   3156
##  2       2   2478
##  3      NA   1606
##  4       3    521
##  5       4    386
##  6       5     68
##  7       6     68
##  8       7     18
##  9       8     17
## 10      10      8
## 11       9      4

La mayoría de los inmuebles vendidos en Cali cuentan con 1 o 2 parquederos

baniosc <- Vivienda %>%
  group_by(banios) %>%
  summarize(Conteo = n()) %>%
  arrange(desc(Conteo))
print(baniosc )
## # A tibble: 12 × 2
##    banios Conteo
##     <int>  <int>
##  1      2   2946
##  2      3   1994
##  3      4   1460
##  4      5    891
##  5      1    497
##  6      6    315
##  7      7    107
##  8      8     48
##  9      0     45
## 10      9     15
## 11     10      9
## 12     NA      3

La mayoría de inmuebles vendidos en Cali cuentan con 2 a 4 baños.

habitacc <- Vivienda %>%
  group_by(habitac) %>%
  summarize(Conteo = n()) %>%
  arrange(desc(Conteo))
print(habitacc )
## # A tibble: 12 × 2
##    habitac Conteo
##      <int>  <int>
##  1       3   4101
##  2       4   1731
##  3       2    927
##  4       5    680
##  5       6    318
##  6       7    173
##  7       8    138
##  8       9     83
##  9       0     66
## 10       1     59
## 11      10     51
## 12      NA      3

La mayoría de inmuebles vendidos en Cali cuentan con 3 o 4 habitaciones.

Discusión

La metodología de análisis exploratorio de datos implementada en este estudio se ha demostrado como un recurso esencial para descifrar patrones y propiedades relevantes presentes en el conjunto de datos recolectado. Este enfoque, basado en un proceso sistemático de examinación, visualización y resumen de la información contenida en los datos, permite una exploración sin prejuicios previos.

Durante este proceso de exploración, se identificaron ciertos valores atípicos que requerían una consideración adicional. Por ejemplo, la presencia de datos con valores cero en las variables “baños” y “habitaciones” podría interpretarse en el contexto actual de apartamentos en zonas urbanas, donde algunos comparten áreas comunes como cocinas, baños y lavanderías. Además, la existencia de apartamentos monoambientes podría explicar los valores cero en estas variables. Estos hallazgos resaltan la importancia de contextualizar los datos y comprender las tendencias actuales del mercado inmobiliario al interpretar los resultados del análisis exploratorio.

Un aspecto relevante abordado es la preferencia por ciertos barrios en la ciudad. Aunque la información sobre los barrios no estaba completamente normalizada, se identificaron repeticiones notables en nombres como Pance, Jardín, Canei, Teresita, Lili y Flora. A pesar de las limitaciones, estos barrios emergieron como posibles focos de interés para la agencia inmobiliaria, destacando la importancia de reconocer patrones incluso en datos incompletos.

En lo que respecta a las preferencias de los compradores de viviendas en Cali, se pueden resumir de la siguiente manera:

Conclusiones:

En síntesis, el proceso de análisis exploratorio de datos ha brindado una visión profunda y reveladora del mercado inmobiliario en Cali. Las tendencias identificadas sugieren que los apartamentos son la opción preferida por los compradores, mientras que la preferencia por pisos bajos, el tamaño de la propiedad y la ubicación en zonas específicas se posicionan como factores influyentes en las decisiones de compra. La metodología de análisis exploratorio ha permitido destacar la importancia de comprender el contexto actual al interpretar los datos y ha proporcionado información crucial para orientar decisiones estratégicas en la agencia inmobiliaria.

A pesar de algunas limitaciones, como la falta de normalización en los nombres de los barrios, el análisis exploratorio ha ofrecido una plataforma sólida para tomar decisiones fundamentadas y adaptar estrategias de marketing y servicios a las necesidades y preferencias cambiantes de los compradores en el mercado inmobiliario de Cali. En última instancia, este enfoque ha enriquecido la comprensión de las dinámicas del mercado, posicionando a la agencia B&C de manera favorable para maximizar su éxito en este entorno competitivo y en constante evolución.