Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Informe de resultados obtenidos del análisis de datos exploratorio realizado al caso de estudio.
Estudiante: Jose Daniel Minotta Saenz
Introducción
En el mundo actual, el análisis de datos se ha convertido en una herramienta fundamental para la toma de decisiones en cualquier organización. Es crucial entender cómo llevar a
cabo las validaciones de datos y valoraciones necesarias para aprobar o desaprobar las hipótesis planteadas en un caso de estudio. Además, aplicar la estadística de manera
adecuada nos permitirá determinar significancias, encontrando así respuestas a las preguntas que surgen al explorar los datos.
En esta actividad de aprendizaje, nuestro objetivo principal es comprender la importancia de aplicar técnicas estadísticas en la validación de modelos y en la toma de decisiones
asertivas que beneficien a una organización. Para alcanzar este propósito, hemos pasado por diferentes etapas, desde el análisis del negocio hasta la preparación, transformación y
visualización de los datos.
En este componente formativo, nos enfocaremos en cómo los resultados obtenidos a partir de diversas pruebas nos ayudarán a verificar las preguntas e hipótesis planteadas en el
caso de estudio que estamos desarrollando. Identificar los elementos clave para validar el modelo utilizado y alinearlos con los objetivos establecidos será esencial para tomar
decisiones informadas y efectivas.
De esta forma, aprenderemos a utilizar herramientas estadísticas para comprender y aprovechar al máximo la información obtenida durante la exploración de datos, y así poder
tomar decisiones fundamentadas y coherentes con los objetivos de la organización. ¡Comencemos este fascinante viaje hacia el análisis y la toma de decisiones basadas en datos!
Aquí se importan las bibliotecas necesarias para realizar el análisis de datos. pandas se utiliza para la manipulación de datos en forma de DataFrames, numpy para operaciones
numéricas, matplotlib y seaborn para la visualización de datos, y os para operaciones con el sistema operativo.
In [15]: data.head(5)
CL 10 SUR # 34B-
SANTA 24 LT 2 MZ X-46 COMERCIALIZABLE LOTE
0 2330 BOGOTA CUNDINAMARCA 559804 0 TRES 134280960000000 NaN
MATILDE (SANTA CON RESTRICCION VIVIENDA
MATILDE...
KR 84 CON CL 10
ESTE INMUEBLE
LT # 8 DE SAN COMERCIALIZABLE LOTE
1 2363 BOGOTA CUNDINAMARCA TINTALA 302079 0 TRES 32857503970000 PRESENTA ZONA DE
JUAN DE CON RESTRICCION COMERCIAL
RESERVA VIAL, Q...
CASTILLA...
LOTE 3
PARCELACIÓN
LA COMERCIALIZABLE LOTE
3 2669 LA CALERA CUNDINAMARCA LOS CERROS 3000000 0 RURAL 5520000000000 NaN
CALERA CON RESTRICCION VIVIENDA
HACIENDA SAN
RAFAEL
DG 140 # 67 - 30
IN 6 (ZONA DE COMERCIALIZABLE LOTE
4 4408 BOGOTA CUNDINAMARCA SUBA 1774266 0 COMERCIAL 138038206000000 NaN
AFECTACIÓN CON RESTRICCION VIVIENDA
PLAN...
Muestra los primeros 30 registros del DataFrame data para tener una idea de los datos en el conjunto.
Codigo int64
Ciudad object
Departamento object
Barrio object
Direccion object
Area Terreno int64
Area Construida int64
Detalle Disponibilidad object
Estrato object
Precio int64
Tipo de Inmueble object
Datos Adicionales object
dtype: object
Muestra los tipos de datos de cada columna en el DataFrame, lo que proporciona información sobre si las columnas son numéricas o categóricas.
print("Columnas Categóricas:")
print(columnas_categoricas)
print("Columnas Numéricas:")
print(columnas_numericas)
Columnas Categóricas:
Index(['Ciudad', 'Departamento', 'Barrio', 'Direccion',
'Detalle Disponibilidad', 'Estrato', 'Tipo de Inmueble',
'Datos Adicionales'],
dtype='object')
Columnas Numéricas:
Index(['Codigo', 'Area Terreno', 'Area Construida', 'Precio'], dtype='object')
Identifica y muestra las columnas categóricas (objetos) y numéricas (int64 y float64) en el DataFrame data.
Este código mostrará información relevante sobre el DataFrame, incluyendo los tipos de datos de cada columna, la cantidad de valores nulos, la cantidad de valores únicos en cada
columna y una descripción básica de las columnas numéricas. También imprimirá los valores únicos encontrados en las columnas "Detalle Disponibilidad", "Estrato" y "Tipo de
Inmueble", lo que puede ayudarte a identificar posibles valores erróneos o atípicos en esas columnas.
Visualiza un diagrama de caja (boxplot) para las columnas numéricas, lo que ayuda a identificar valores atípicos o datos extremos.
Histogramas de frecuencia
In [22]: data[columnas_numericas].hist(bins=30, figsize=(12, 8))
plt.suptitle("Histogramas de Frecuencia para Datos Numéricos", y=1.02)
plt.show()
Muestra histogramas de frecuencia para cada columna numérica en el DataFrame data. Esto permite visualizar la distribución de los datos y ver la concentración en diferentes
rangos.
Para determinar la correlación entre variables, podemos utilizar la herramienta de gráficos de Seaborn para visualizar la relación entre diferentes columnas numéricas del DataFrame.
Utilizaremos un mapa de calor (heatmap) para representar la matriz de correlación.
Este código generará un mapa de calor que muestra la correlación entre las variables numéricas del DataFrame. Los valores en el mapa de calor varían entre -1 y 1, donde 1 indica
una correlación positiva perfecta, -1 indica una correlación negativa perfecta y 0 indica que no hay correlación entre las variables.
Al analizar el mapa de calor, podemos identificar qué pares de variables están altamente correlacionados o inversamente correlacionados. Esto puede proporcionarnos información
valiosa sobre la relación entre las diferentes características de los inmuebles en el conjunto de datos.
# Comprobación
print(f"Registros originales: {len(data)}")
print(f"Registros limpios: {len(data_limpia)}")
Crea un nuevo DataFrame llamado data_limpia que elimina registros duplicados y filas que contienen valores nulos. Luego muestra la cantidad de registros en el DataFrame original
y en el DataFrame limpio.
Para agrupar columnas y obtener información importante, podemos realizar agregaciones y resúmenes estadísticos en función de categorías específicas. En este caso, considerando
el conjunto de datos de inmuebles, podríamos agrupar por ciudades, departamentos, barrios o estratos para obtener estadísticas relevantes sobre los inmuebles en cada grupo.
max count
Ciudad
AGUAZUL 28679755510000 3
ANGOSTURA 24581464440000 1
ARMERO 5932757000000 2
BARRANQUILLA 36673427000000 14
BITUIMA 4806000000000 1
BOGOTA 328393170351500 34
BOLIVAR - CAUCA 7378920000000 1
BUGA 452337898200000 5
CALI 16677840600000 7
CALIMA EL DARIEN 51713235000000 10
CARMEN DE BOLIVAR 982368000000 1
CARTAGENA 76590000000000 3
CAUCASIA 5821480000000 1
CHIA 27855540000000 2
CUCUTA 8980970000000 9
CURITI 55248601890000 1
DAGUA 1752778880000 1
EL AGUILA 3787282600000 1
EL PLAYON 3644256000000 1
EL ROSAL 109839864000000 1
ENVIGADO 17712098400000 1
FUNZA 21008906000000 1
GIRARDOT 103439900000000 4
IBAGUE 5177907200000 1
LA CALERA 5520000000000 1
LA DORADA 19356060000000 1
LA VIRGINIA 6329540900000 1
LOS PATIOS 1785606600000 1
MADRID 116565311500000 1
MANIZALES 66147000000000 13
MARSELLA 240000000000 1
MEDELLIN 12334844000000 5
MONTERIA 14356563410000 6
PEREIRA 43343535000000 12
PIEDRAS 68451105930000 1
PUERTO LOPEZ 41901550210000 1
RICAURTE 104073361725000 1
SAN ANTONIO DEL TEQUENDAMA 18333741240000 2
SANTANDER DE QUILICHAO 14162132860000 2
SOATA 6829888500000 1
SOGAMOSO 147133144000000 1
TARAZA 807621000000 1
TENJO 6369860000000 1
TIBU 5805937010000 1
TURBO 16957400000000 1
VILLA RICA 70903412109800 1
VILLAVICENCIO 10400137300000 285
YUMBO 6882840000000 1
max count
Departamento
ANTIOQUIA 24581464440000 10
ATLÁNTICO 36673427000000 14
BOLÍVAR 76590000000000 4
BOYACÁ 147133144000000 2
CALDAS 66147000000000 14
CASANARE 28679755510000 3
CAUCA 70903412109800 4
CUNDINAMARCA 328393170351500 49
CÓRDOBA 14356563410000 6
META 41901550210000 286
NORTE DE SANTANDER 8980970000000 11
RISARALDA 43343535000000 14
SANTANDER 55248601890000 2
TOLIMA 68451105930000 4
VALLE DEL CAUCA 452337898200000 25
max count
Barrio
AV 30 DE AGOSTO 1215089400000 10
BELLAVISTA 1785606600000 1
CENTRO 147133144000000 3
CIUDADELA CHIPICHAPE 16677840600000 1
CONDOMINIO CAMPESTRE MONACO 104073361725000 1
CORREGIMIENTO EL CARMEN 1752778880000 1
EL CENTRO 9094862100000 1
EL HOYO 4594621970000 1
EL PRADO 36673427000000 1
GUACANDÁ 6882840000000 1
JOSE MARIA CABAL 13525965504000 4
LA CALERA 5520000000000 1
PARQUE IND CAUCADESA 14162132860000 1
PARQUE INDUSTRIAL CAUCADESA 70903412109800 1
PRADOS DEL NORTE 296053386200 4
SANTA MATILDE 134280960000000 1
SINAI 396000000000 10
SUBA 138038206000000 1
TINTALA 32857503970000 1
VEREDA CHAMBIMBAL 452337898200000 1
VEREDA DE CAMBULAR 4806000000000 1
VEREDA FONQUETA 27855540000000 1
VEREDA PALERMO 51713235000000 10
VILLA DEL SUR 341715000000 1
En este código, hemos agrupado los datos por ciudad, departamento, barrio y estrato, y luego calculamos algunas estadísticas sobre el precio de los inmuebles en cada grupo, como
el promedio, la mediana, el valor mínimo, el valor máximo y la cantidad de inmuebles en cada grupo.
Esto nos permitirá obtener información importante sobre cómo varían los precios de los inmuebles según la ubicación o el estrato, lo que podría ser útil para tomar decisiones en el
mercado inmobiliario. Además, podemos adaptar las columnas de agrupación y las estadísticas según nuestras necesidades específicas para obtener más información relevante.
Supongamos que deseamos crear una columna que represente el precio del inmueble en dólares utilizando una tasa de cambio fija:
# Creamos una nueva columna 'Precio_Dolares' basada en 'Precio' y una tasa de cambio de 1 USD = 4000 COP
data['Tasa_Cambio'] = 4000
data['Precio_Dolares'] = data['Precio'] / data['Tasa_Cambio']
Precio_Dolares
0 3.357024e+10
1 8.214376e+09
2 3.678329e+10
3 1.380000e+09
4 3.450955e+10
Se puede crear nuevas columnas según tus necesidades específicas y la lógica que desees aplicar a los datos existentes. Las operaciones que se puede aplicar son muy variadas,
desde cálculos matemáticos hasta funciones más complejas que involucren varias columnas. Con Pandas, se tiene muchas opciones para manipular y transformar los datos según
nuestros requerimientos.
Este código utiliza la biblioteca Seaborn para crear un histograma que muestra la distribución de los precios de viviendas y locales para la venta en el conjunto de datos. Los precios
se representarán en el eje x, y la frecuencia (número de inmuebles) se representará en el eje y. Los precios de viviendas se mostrarán en color azul y los precios de locales se
mostrarán en color naranja.
Al analizar el histograma resultante, podrás obtener una idea clara de cómo se distribuyen los precios de viviendas y locales en el conjunto de datos, lo que nos permitirá comprender
mejor el rango y la concentración de precios en cada categoría de inmueble.
Hipótesis nula (H0): La hipótesis nula establece que los datos provienen de una población con una distribución normal. En términos más formales, significa que no hay diferencias
significativas entre la distribución de los datos observados y una distribución normal teórica.
Hipótesis alternativa (H1 o HA): La hipótesis alternativa es la afirmación opuesta a la hipótesis nula. En el caso de la prueba de normalidad, la hipótesis alternativa sugiere que los
datos no provienen de una distribución normal.
Vs.
## Realice conclusiones sobre las variables que considere tienen mayor # Supongamos que queremos realizar la prueba de normalidad para la columna 'P
columna_precio = 'Precio'
# Filtrar los datos para la columna seleccionada y eliminar los valores faltantes (NaN)
datos = df[columna_precio].dropna()
Basándonos en los resultados de la prueba de normalidad de Shapiro-Wilk para la columna 'Precio', podemos llegar a las siguientes conclusiones:
1. Estadístico de prueba: El valor del estadístico de prueba obtenido es de aproximadamente 0.2523. Este valor se utiliza para evaluar cuán cerca están los datos de una
distribución normal. Un valor cercano a 1 indica que los datos se ajustan bien a una distribución normal, mientras que un valor cercano a 0 indica una desviación significativa de
la normalidad.
2. P-valor: El p-valor calculado es extremadamente pequeño, aproximadamente 7.45e-39 (es decir, 0.0000000000000000000000000000000000000745). El p-valor es una medida
de la evidencia en contra de la hipótesis nula, que en este caso es la hipótesis de que los datos provienen de una distribución normal. Un p-valor tan pequeño indica que hay
evidencia suficiente para rechazar la hipótesis nula.
3. Conclusión: Dado que el p-valor es significativamente menor que el nivel de significancia (usualmente 0.05), rechazamos la hipótesis nula. Esto significa que los datos no
parecen provenir de una distribución normal. En otras palabras, la distribución de los precios de los inmuebles disponibles para la venta no sigue una forma de campana típica
que se encuentra en una distribución normal.
En resumen, los resultados sugieren que los precios de los inmuebles disponibles para la venta en la base de datos no se distribuyen normalmente. Esto es importante tenerlo en
cuenta al realizar análisis o modelos estadísticos que asuman una distribución normal de los datos. En este caso particular, podrías considerar otras pruebas o técnicas estadísticas
que sean más adecuadas para analizar la distribución de precios.
A continuación trataremos de solucionar el problema de normalidad aplicando diversos metodos de transformación con el objetivo de aproximar los datos a una distribución más
cercana a la normalidad. Al aplicar transformaciones a los datos, se busca encontrar una forma funcional que estabilice la varianza y acerque los datos a una distribución normal.
# Filtrar los datos para la columna seleccionada y eliminar los valores faltantes (NaN)
datos = df[columna_precio].dropna()
La interpretación de los resultados de la prueba de normalidad de Shapiro-Wilk utilizando la transforación de la raíz cuadrada es la siguiente:
Estadístico de prueba: 0.5023534297943115 El valor del estadístico de prueba de Shapiro-Wilk es un número que se utiliza para evaluar la normalidad de los datos transformados.
En este caso, el valor del estadístico es aproximadamente 0.502, lo cual no es cercano a 1. Un valor cercano a 1 indicaría que los datos se ajustan bien a una distribución normal. Sin
embargo, al ser 0.502, sugiere que los datos transformados tienen una distribución diferente a la normal.
P-valor: 1.5510818773122938e-33 El valor del p-valor es una medida de la evidencia en contra de la hipótesis nula, que en este caso es que los datos transformados provienen de
una distribución normal. Un valor de p-valor muy pequeño (cercano a cero) indica una fuerte evidencia en contra de la hipótesis nula. En este caso, el p-valor es aproximadamente
1.55e-33 (una notación científica para 1.55 multiplicado por 10 elevado a la potencia -33), lo cual es extremadamente pequeño. Esto significa que hay una fuerte evidencia en contra
de que los datos transformados provengan de una distribución normal.
Interpretación final: Dado que el p-valor es menor que el nivel de significancia (usualmente 0.05 o 5%), se rechaza la hipótesis nula. En otras palabras, hay suficiente evidencia para
afirmar que los datos transformados no provienen de una distribución normal.
Transformación de Box-Cox
In [28]: # Cargar los datos desde el archivo CSV
df = pd.read_csv('Inmuebles_Disponibles_Para_La_Venta.csv')
# Filtrar los datos para la columna seleccionada y eliminar los valores faltantes (NaN)
datos = df[columna_precio].dropna()
# Agregar una constante positiva para asegurarnos de que todos los datos sean positivos
constante_c = 0.001
datos_transformados, lambda_value = stats.boxcox(datos + constante_c)
1. Estadístico de prueba: 0.760513424873352 El valor del estadístico de prueba de Shapiro-Wilk es un número que se utiliza para evaluar la normalidad de los datos
transformados. En este caso, el valor del estadístico es aproximadamente 0.761, lo cual no es cercano a 1. Un valor cercano a 1 indicaría que los datos se ajustan bien a una
distribución normal. Sin embargo, al ser 0.761, sugiere que los datos transformados tienen una distribución diferente a la normal.
2. P-valor: 5.236549407861177e-25 El valor del p-valor es una medida de la evidencia en contra de la hipótesis nula, que en este caso es que los datos transformados provienen
de una distribución normal. Un valor de p-valor muy pequeño (cercano a cero) indica una fuerte evidencia en contra de la hipótesis nula. En este caso, el p-valor es
aproximadamente 5.24e-25 (una notación científica para 5.24 multiplicado por 10 elevado a la potencia -25), lo cual es extremadamente pequeño. Esto significa que hay una
fuerte evidencia en contra de que los datos transformados provengan de una distribución normal.
3. Interpretación final: Dado que el p-valor es menor que el nivel de significancia (usualmente 0.05 o 5%), se rechaza la hipótesis nula. En otras palabras, hay suficiente evidencia
para afirmar que los datos transformados no provienen de una distribución normal.
En conclusión, según los resultados de la prueba de normalidad de Shapiro-Wilk, los datos transformados no se ajustan bien a una distribución normal.
Note: you may need to restart the kernel to use updated packages.
ERROR: Ignored the following versions that require a different python version: 1.6.2 Requires-Python >=3.7,<3.10; 1.6.3 Requires-Python >=3.7,<3.1
0; 1.7.0 Requires-Python >=3.7,<3.10; 1.7.1 Requires-Python >=3.7,<3.10; 1.7.2 Requires-Python >=3.7,<3.11; 1.7.3 Requires-Python >=3.7,<3.11; 1.8.
0 Requires-Python >=3.8,<3.11; 1.8.0rc1 Requires-Python >=3.8,<3.11; 1.8.0rc2 Requires-Python >=3.8,<3.11; 1.8.0rc3 Requires-Python >=3.8,<3.11; 1.
8.0rc4 Requires-Python >=3.8,<3.11; 1.8.1 Requires-Python >=3.8,<3.11
ERROR: Could not find a version that satisfies the requirement scipy==1.6.3 (from versions: 0.8.0, 0.9.0, 0.10.0, 0.10.1, 0.11.0, 0.12.0, 0.12.1,
0.13.0, 0.13.1, 0.13.2, 0.13.3, 0.14.0, 0.14.1, 0.15.0, 0.15.1, 0.16.0, 0.16.1, 0.17.0, 0.17.1, 0.18.0, 0.18.1, 0.19.0, 0.19.1, 1.0.0, 1.0.1, 1.1.
0, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.6.0, 1.6.1, 1.9.0rc1, 1.9.0rc2, 1.9.0
rc3, 1.9.0, 1.9.1, 1.9.2, 1.9.3, 1.10.0rc1, 1.10.0rc2, 1.10.0, 1.10.1, 1.11.0rc1, 1.11.0rc2, 1.11.0, 1.11.1)
ERROR: No matching distribution found for scipy==1.6.3
# Filtrar los datos para la columna seleccionada y eliminar los valores faltantes (NaN)
datos = df[columna_precio].dropna()
La interpretación de los resultados de la prueba de normalidad de Shapiro-Wilk para los residuos del modelo WLS es la siguiente:
1. Estadístico de prueba: 0.33506715297698975 El valor del estadístico de prueba de Shapiro-Wilk es un número que se utiliza para evaluar la normalidad de los residuos del
modelo WLS. En este caso, el valor del estadístico es aproximadamente 0.335, lo cual no es cercano a 1. Un valor cercano a 1 indicaría que los residuos se ajustan bien a una
distribución normal. Sin embargo, al ser 0.335, sugiere que los residuos tienen una distribución diferente a la normal.
2. P-valor: 2.79523103129788e-37 El valor del p-valor es una medida de la evidencia en contra de la hipótesis nula, que en este caso es que los residuos del modelo WLS
provienen de una distribución normal. Un valor de p-valor muy pequeño (cercano a cero) indica una fuerte evidencia en contra de la hipótesis nula. En este caso, el p-valor es
aproximadamente 2.80e-37 (una notación científica para 2.80 multiplicado por 10 elevado a la potencia -37), lo cual es extremadamente pequeño. Esto significa que hay una
fuerte evidencia en contra de que los residuos del modelo WLS provengan de una distribución normal.
3. Interpretación final: Dado que el p-valor es menor que el nivel de significancia (usualmente 0.05 o 5%), se rechaza la hipótesis nula. En otras palabras, hay suficiente evidencia
para afirmar que los residuos del modelo WLS no provienen de una distribución normal.
En conclusión, según los resultados de la prueba de normalidad de Shapiro-Wilk para los residuos del modelo WLS, estos no se ajustan bien a una distribución normal. Esto puede
tener implicaciones en el uso de ciertos métodos estadísticos o en la interpretación de los resultados del modelo WLS.
Tipo de Inmueble: La variable "Tipo de Inmueble" es crucial para nuestro análisis, ya que nos permite distinguir entre viviendas y locales comerciales. Esto nos ayuda a separar los
datos y visualizar la distribución de precios para cada categoría de inmueble de manera individual.
Precio: La variable "Precio" es la más importante para nuestro análisis, ya que es la que nos proporciona información sobre los valores monetarios de los inmuebles. Al analizar la
distribución de precios, podemos obtener una comprensión clara de cómo están distribuidos los valores de venta tanto para viviendas como para locales comerciales.
Estrato: Aunque no se mencionó explícitamente en la pregunta objetivo, la variable "Estrato" también puede ser relevante, ya que puede influir en el precio de los inmuebles.
Podríamos realizar análisis adicionales para determinar cómo el estrato afecta la distribución de precios y si hay alguna correlación entre el estrato y los precios.
Detalle Disponibilidad / Es_Comercializable: La variable "Detalle Disponibilidad" no parece ser crucial para nuestro objetivo, pero se utilizó para crear una nueva columna llamada
"Es_Comercializable", que nos indica si un inmueble es comercializable o no. Esto puede ser relevante para futuros análisis o toma de decisiones sobre qué tipo de inmuebles están
disponibles para venta comercial.
En resumen, las variables más relevantes para el análisis de la distribución de precios de viviendas y locales para la venta son el "Tipo de Inmueble" y el "Precio". El estrato y la
disponibilidad comercial también pueden ser relevantes, pero su impacto dependerá de la pregunta específica que queramos responder o del análisis adicional que realicemos.
Siempre es importante adaptar el análisis a los objetivos específicos y utilizar las variables más relevantes para obtener información significativa.
En base a los resultados obtenidos y considerando un nivel de significancia (alpha) de 0.05, se concluye que existe suficiente evidencia para rechazar la Hipótesis nula (H0), que
afirmaba que los datos provienen de una distribución normal. En cambio, se acepta la hipótesis alternativa (H1), que sugiere que los datos no provienen de una distribución normal.
Por otro lado el resultado obtenido por medio de la transformación de Box-Cox El tiene el valor más alto del estadístico de prueba de Shapiro-Wilk (0.7605), lo que indica una mayor
aproximación a la normalidad en comparación con los otros resultados.
Por lo tanto, el resultado número 3 (Prueba de normalidad de Shapiro-Wilk para 'Precio' (datos transformados)) es el que más se aproxima a la normalidad en comparación con los
otros resultados. Sin embargo, es importante tener en cuenta que, aunque este resultado muestra una mayor aproximación a la normalidad, sigue indicando que los datos
transformados no provienen de una distribución normal, lo que puede tener implicaciones en ciertos análisis estadísticos que asumen esta distribución.