Una empresa inmobiliaria líder en una gran ciudad está buscando comprender en profundidad el mercado de viviendas urbanas para tomar decisiones estratégicas más informadas. La empresa posee una base de datos extensa que contiene información detallada sobre diversas propiedades residenciales disponibles en el mercado. Se requiere realizar un análisis holístico de estos datos para identificar patrones, relaciones y segmentaciones relevantes que permitan mejorar la toma de decisiones en cuanto a la compra, venta y valoración de propiedades.
Carga y análisis exploratorio de los datos
Perfilado inicial de variables: Objetivo: ver tipo de dato, cardinalidad y cantidad de nulos por columna.
| variable | dtype | n_unique | n_missing |
|---|---|---|---|
| id | numeric | 8320 | 3 |
| zona | character | 6 | 3 |
| piso | character | 13 | 2638 |
| estrato | numeric | 5 | 3 |
| preciom | numeric | 540 | 2 |
| areaconst | numeric | 653 | 3 |
| parqueaderos | numeric | 11 | 1605 |
| banios | numeric | 12 | 3 |
| habitaciones | numeric | 12 | 3 |
| tipo | character | 3 | 3 |
| barrio | character | 437 | 3 |
| longitud | numeric | 2929 | 3 |
| latitud | numeric | 3680 | 3 |
Normalización de nombres (errores tipográficos)
Quitamos identificadores y datos geográficos que no son son útiles.
Distribuciones: boxplots por grupos Ttas una limpieza inicial, hacemos una exploración más profunda. Separaremos (i) precio y area_construida y (ii) el resto de numéricas, para mejorar legibilidad.
Datos nulos
Para decidir cómo lidiar con los datos nulos, conviene determinar si las variables siguen una distribución normal. Para ellos usaremos el Test de Kolmogorov–Smirnov en variables numéricas.
Aplicamos K–S contra N(0,1) tras estandarizar cada variable.
| columna | statistic | p_value | conclusion |
|---|---|---|---|
| estrato | 0.2085 | 0 | ❌ Se rechaza normalidad |
| precio | 0.1686 | 0 | ❌ Se rechaza normalidad |
| area_construida | 0.1829 | 0 | ❌ Se rechaza normalidad |
| parqueaderos | 0.2799 | 0 | ❌ Se rechaza normalidad |
| baños | 0.2009 | 0 | ❌ Se rechaza normalidad |
| habitaciones | 0.2797 | 0 | ❌ Se rechaza normalidad |
## Se imputó por mediana en: estrato, precio, area_construida, parqueaderos, baños, habitaciones
| columna | na_count |
|---|---|
| estrato | 0 |
| precio | 0 |
| area_construida | 0 |
| parqueaderos | 0 |
| baños | 0 |
| habitaciones | 0 |
Imputación por mediana (tras KS): Dado que KS rechazó la normalidad, la mediana es preferible a la media por su robustez ante outliers. Primero se identificaron columnas numéricas con valores perdidos; cuando existieron, se imputaron con la mediana de cada variable. Si no había NAs, no se realizaron cambios. Esto mantiene la forma de la distribución y evita sesgos producidos por valores extremos.
| columna | na_count |
|---|---|
| zona | 3 |
| piso | 2638 |
| tipo | 3 |
| barrio | 3 |
## Se imputó por moda en: zona, piso, tipo, barrio
| columna | na_count |
|---|---|
| zona | 0 |
| piso | 0 |
| tipo | 0 |
| barrio | 0 |
Imputación por moda: Para las variables categóricas con valores perdidos, se imputó el valor más frecuente (moda). Esta técnica es adecuada para datos nominales, ya que preserva la categoría predominante en cada variable y evita la creación de niveles artificiales. Al igual que con la imputación por mediana en numéricas no normales, se aplica únicamente cuando existen valores faltantes.
Datos atípicos
Adicionalmente a las transfomaciones previas se van a manejar los datos atípicos. Para ello se usará la regla de IQR y aquellos datos que se salgan del rango serán imputados, puesto que el data frame no tiene suficientes entradas para eliminar dichas entradas. Para imputar esos datos se usará el proceso conocido como winzorización: Determinar los límites inferior y superior usando la regla de 1.5 × IQR; luego reemplazar cualquier valor menor al límite inferior por dicho límite, y cualquier valor mayor al límite superior por el límite superior.
| columna | recortados_inferior | recortados_superior |
|---|---|---|
| estrato | 0 | 0 |
| precio | 0 | 552 |
| area_construida | 0 | 382 |
| parqueaderos | 0 | 567 |
| baños | 0 | 72 |
| habitaciones | 125 | 763 |
Análisis de Componentes Principales (PCA)
Objetivo: Reducir la dimensionalidad de las variables numéricas para identificar las combinaciones de factores que explican mayor variación en el mercado.
## Componentes retenidas ( 3 ): PC1, PC2, PC3
Análisis de Conglomerados (Clustering)
Objetivo: Identificar segmentos homogéneos de propiedades para entender las dinámicas de oferta según características comunes.
## k óptimo por silhouette: 10
Análisis de Correspondencia (CA)
Objetivo: Explorar asociaciones entre variables categóricas clave y detectar patrones de concentración.
Resultados
| cluster | n | precio_median | area_median |
|---|---|---|---|
| 10 | 1449 | 190.0 | 73.0 |
| 4 | 1187 | 280.0 | 89.0 |
| 3 | 1105 | 580.0 | 150.0 |
| 2 | 1102 | 280.0 | 95.0 |
| 8 | 659 | 135.0 | 70.0 |
| 1 | 627 | 950.0 | 280.0 |
| 6 | 604 | 530.0 | 300.0 |
| 5 | 598 | 402.5 | 197.5 |
| 9 | 577 | 320.0 | 234.0 |
| 7 | 414 | 820.0 | 420.0 |
El mercado se organiza en 4 lineas que presento de menor a mayor accequibilidad: 1 (10, 8), 2 (4, 2, 9, 5), 3 (6, 3) y 4 (1, 7).
Existen dos mercados especialmente interesantes por su alto valor: Cluster 1 (precio mediano más alto) y Cluster 7 (viviendas muy grandes), lo cual representa el12% del inventario total. Pero el grueso del negocio está en lo asequible/medio: 10, 4, 3 y 2 concentran 58% del inventario.
Usando estos cuatro grupos se pueden identificar cuatro diferentes tipos de clientes, siendo el más bajo compradores de primera vivienda y de clase social media o baja, y el más mayor personas con altos ingresos
De los gráficos anteriores, podemos inferir que, con excepción del cluster 8, la mayoría de viviendas corresponden a la zona sur y esta a su vez es una zona de precios medio alto, siendo el promedoio de precios menor solamente a a la Zona Oeste, donde los precios son considerablemente mayores. A su vez la zona Centro y Oriente tiene los precios más bajos.
Recomendaciones
Como oportunidad de negocio, se puede optimizar el precio al que se vende o de identificar oportunidades de negocio en la compra, ya que hay segmentos de área grande con precio medio (5, 9) que pueden reposicionarse por precio/m².
Adicionalmente, al tener segmentadas las vbiofiendas en clusters, se puede tener estrategias de negocio específicas para cada una de ellas, teniendo en cuenta que son clientes diferentes los interesados.