Está en la página 1de 15

Estudio de caso: análisis exploratorio de datos

Contents
Solución

La empresa A&A Ltda, empieza un proceso de implementación de Machine Learning, usted ha sido designado para una de las tareas más
importante dentro del proyecto, el cual consisten en realizar el análisis exploratorio de los datos y documentar los resultados encontrados,
generando un informe que involucre los procedimientos y los resultados. El archivo que se analizara corresponde a precios de viviendas y
locales para la venta y la colección de datos cuenta con variables que se ven involucradas en ese valor. La información se encuentra en el
siguiente enlace la cual usted debe descargar e importar con la herramienta anaconda, el archivo lo puede exportar en formato CSV.

vínculo de descarga

El informe debe dar cuenta de:

Procedimiento para la importación del archivo en formato CSV


Plante una pregunta objetivo
Total, de Registros
Total, de columnas
Detallado de cada columna
Identificar cuáles de las columnas son categóricas y numéricas
Identifique en que columnas existen valores nulos
Identifique si existen registros duplicados
Realice un reporte estadístico de los datos numéricos (media, moda, mediana, desviación estándar, cuartiles, entre otros que considere)
Identifique columnas con valores erróneos
Utilice gráficos para identificar valores atípicos
Realice histogramas de frecuencia
Use la herramienta para gráficos para determinar correlación entre variables
Realice y explique la eliminación de datos nulos y duplicados
Agrupe columnas que considere pueden generar información importante
Cree nuevas columnas a partir de las existentes
Identifique columnas que no aportan de acuerdo con su pregunta objetivo
Realice conclusiones sobre las variables que considere tienen mayor relevancia
Dejar documentado usando gráficos y capturas de pantalla todo el proceso realizado.

Se importa pandas

import pandas as pd

Solución
1) Procedimiento para la importación del archivo en formato CSV
filename = 'Inmuebles_Disponibles_Para_La_Venta.csv'

data = pd.read_csv(filename)
# se ajusta el precio dividido entre 1000_000 para entender mejor la información
data['Precio'] = data['Precio']/1000_000;

2) Plantee una pregunta objetivo


Describir el mercado actual de viviendas en Colombia comparando el valor de precios por estrato y localidad

3) Total, de Registros
totalregistros = data['Codigo'].count()
print(f'total registros {totalregistros}') # en forma alternativa
data.shape[0]

total registros 459

459

4) Total de columnas
totalcolumnas = data.shape[1];
print(f'total columnas {totalcolumnas}')

total columnas 12

5) Detallado de cada columna


data.info()

https://cienciadatos.gestionhseq.com/actividad4 1/14
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 459 entries, 0 to 458 Data columns (total 12 columns):
# Column Non-Null Count Dtype

0 Codigo 459 non-null int64


1 Ciudad 459 non-null object
2 Departamento 459 non-null object
3 Barrio 58 non-null object
4 Direccion 459 non-null object
5 Area Terreno 459 non-null int64
6 Area Construida 459 non-null int64
7 Detalle Disponibilidad 459 non-null object
8 Estrato 459 non-null object
9 Precio 459 non-null float64
1 Tipo de Inmueble 459 non-null object
0
1 Datos Adicionales 101 non-null object
1
dtypes: float64(1), int64(3), object(8)
memory usage: 43.2+ KB

6) Identificar cuáles de las columnas son categóricas y numéricas


info = data.dtypes

res = dict((key, 'Numérica') if value == 'int64' else (key, 'Categórica') for key, value in info.items())
# se muestra como un dataframe
pd.DataFrame({'Columna': res.keys(),'tipo': res.values()})

Columna tipo

0 Codigo Numérica

1 Ciudad Categórica

2 Departamento Categórica

3 Barrio Categórica

4 Direccion Categórica

5 Area Terreno Numérica

6 Area Construida Numérica

7 Detalle Disponibilidad Categórica

8 Estrato Categórica

9 Precio Categórica

10 Tipo de Inmueble Categórica

11 Datos Adicionales Categórica

7) Identifique en que columnas existen valores nulos


with_null = dict()
for key, value in data.isna().sum().items():
if value > 0:
with_null[key] = value
pd.DataFrame({'Columnas': with_null.keys(), 'Nulos':with_null.values() })

Columnas Nulos

0 Barrio 401

1 Datos Adicionales 358

8) Identifique si existen registros duplicados


newdata = data.drop_duplicates()
# Se hace una segunda prueba con multiples columnas
newdata = newdata.drop_duplicates(subset=['Ciudad','Departamento','Barrio','Direccion']) duplicados = data.shape[0]- newdata.shape[0]
if duplicados == 0:
print('No se encontraron datos repetidos')
else:
print(f'Hay {duplicados} registros duplicados, se procede a reemplazar la variable data con con contenidos de newdata')
data = newdata

Hay 12 registros duplicados, se procede a reemplazar la variable data con con contenidos de newdata

print(f'El estudio se realizará con {data.shape[0]} filas')

El estudio se realizará con 447 filas

9) Realice un reporte estadístico de los datos numéricos (media, moda,


mediana, desviación estándar, cuartiles, entre otros que considere)
data.describe()

https://cienciadatos.gestionhseq.com/actividad4 2/14
Codigo Area Terreno Area Construida Precio

count 447.000000 4.470000e+02 4.470000e+02 4.470000e+02

mean 17664.713647 1.623169e+06 1.157737e+04 7.634667e+06

std 2522.621125 1.860924e+07 1.286606e+05 3.261003e+07

min 2330.000000 0.000000e+00 0.000000e+00 6.333900e+04

25% 18137.500000 0.000000e+00 0.000000e+00 1.257250e+05

50% 18295.000000 0.000000e+00 0.000000e+00 1.621500e+05

75% 18479.500000 0.000000e+00 0.000000e+00 9.918750e+05

max 19361.000000 3.217197e+08 2.272400e+06 4.523379e+08

import matplotlib.pyplot as plt


fig = data.boxplot("Precio", by="Departamento"); muestras = data.shape[0];
plt.ylabel('precio'); plt.suptitle('');
plt.xticks(rotation=75);
plt.title(f'Boxplot valor por condición {muestras} muestras');

Estudio de precio por cuidad y tipo de inmueble


Siempre y cuando la muestra total sea representativa (mas de 15 muestras)

norepre = dict()
for tipoinmueble in data['Tipo de Inmueble'].unique():
muestras = data[data['Tipo de Inmueble'] == tipoinmueble].shape[0]
if muestras < 11:
norepre[tipoinmueble] = muestras
continue
fig = data[data['Tipo de Inmueble'] == tipoinmueble].boxplot("Precio", by="Departamento") plt.ylabel('precio')
plt.suptitle('')
plt.xticks(rotation=75);
plt.title(f'Tipo inmueble {tipoinmueble} sobre {muestras} muestras') print('Inmuebles no representativos por categoría')
pd.DataFrame({'Tipo inmueble':norepre.keys(),'muestras':norepre.values()})

Tipo inmueble
Inmuebles no representativos muestras
por categoría

0 LOTE COMERCIAL 3

1 CLINICA 2

2 HOTEL 1

3 FINCA 5

4 LOTE MIXTO 6

5 LOTE INDUSTRIAL 3

6 EDIFICIO VIVIENDA 1

7 CASA 9

8 LOTE CON CONSTRUCCION 7

9 LOTE AGRICOLA 5

10 EDIFICIO 2

11 APARTAMENTO 5

12 LOTE NO URBANIZABLE 1

13 LOTE 6

14 GARAJE 2

https://cienciadatos.gestionhseq.com/actividad4 3/14
https://cienciadatos.gestionhseq.com/actividad4 4/14
import matplotlib.pyplot as plt

# se identifica la cantida de diferenes departamentos en la muestra


def showbycity(departamento, minimo = 11): dpto = departamento.upper()
muestras = data[data['Departamento'] == dpto].shape[0]
if muestras < minimo:
return (dpto, muestras)
fig = data[data['Departamento'] == dpto].boxplot("Precio",by="Ciudad") plt.ylabel('Precio')
plt.xticks(rotation=45); plt.suptitle('')
plt.title(f'{dpto} valor por condición, {muestras} muestras')

Estudio comparativo de variación de precios por cuidad


# se identifican todas las cuidades
res = dict()
for departamento in data['Departamento'].unique(): val = showbycity(departamento, minimo=10)
if val is None: continue
res[val[0]] = val[1]
print('Omitidos en este punto por cantidad de muestras insuficientes') pd.DataFrame({'Departamento': res.keys() , 'Muestras':res.values()})

Omitidos en este punto por cantidad de muestras insuficientes

Departamento Muestras

0 BOYACÁ 2

1 ATLÁNTICO 8

2 CAUCA 2

3 NORTE DE SANTANDER 3

4 TOLIMA 3

5 SANTANDER 2

6 CHOCÓ 2

7 CASANARE 3

8 CÓRDOBA 1

https://cienciadatos.gestionhseq.com/actividad4 5/14
https://cienciadatos.gestionhseq.com/actividad4 6/14
Estudio comparativo de variación de precios por estrato
Se convierte los valores de estrato a numéricos en una nueva columna, para que muestre los gráficos en orden

data['Estrato'].unique() mapa={'UNO':1,
'DOS':2,
'TRES':3,
'CUATRO':4,
'CINCO':5,
'SEIS':6,
'RURAL': 8,
'COMERCIAL':9,
'INDUSTRIAL':10,
}
data['Estrato_num'] = data.apply(lambda row: mapa[row.Estrato], axis = 1) data.head(5)

Area
Codigo Ciudad Departamento Barrio Direccion Area Detalle Tipo de Datos
Terreno Estrato Precio Estrato_num
Construida Disponibilidad Inmueble Adicionales

CL 10 SUR
# 34B-24 COMERCIALIZABLE
SANTA LOTE
0 2330 BOGOTA CUNDINAMARCA LT 2 MZ X- 559804 0 CON TRES 1.342810e+08
MATILDE VIVIENDA N
46 (SANTA RESTRICCION
MATILDE...

KR 84 CON CL COMERCIALIZABLE ESTE INMUEBLE


10 LT # 8 LOTE PRESENTA ZONA
1 2363 BOGOTA CUNDINAMARCA TINTALA TRES 3.285750e+07
302079 0 CON COMERCIAL
DE SAN DE RESERVA VIAL,
RESTRICCION
JUAN DE Q...
CASTILLA...
ESTE INMUEBLE
COMERCIALIZABLE
2 2575 SOGAMOSO BOYACÁ CENTRO CRA. 10 #11- CUATRO 1.376828e+08 CLINICA SE
165508 726900 CON
78/80 Ó CL 12 COMERCIALIZARÁ
RESTRICCION
# 9 - 77/85 Ó A TRAVÉS DE SU...
CALLE...
LA LOTE 3 COMERCIALIZABLE LOTE
PARCELACIÓN
3 2669 LA CALERA CUNDINAMARCA LOS CERROS 3000000 0 CON RURAL 5.520000e+06 NaN
CALERA VIVIENDA
HACIENDA RESTRICCION
SAN RAFAEL

DG 140 # 67 -
30 IN 6 COMERCIALIZABLE LOTE
4 4408 BOGOTA CUNDINAMARCA SUBA (ZONA DE 1774266 0 CON COMERCIAL 1.380382e+08 VIVIENDA N
AFECTACIÓN RESTRICCION
PLAN...

10) Identifique columnas con valores erróneos


Para este punto uno de los validadores corresponde al área de terreno debe se mayor a cero, también el áre construida. Los reportes de los
registros con valores erróneos se haran en archivos locales en formato csv

https://cienciadatos.gestionhseq.com/actividad4 7/14
sin_area = data[data['Area Terreno'] == 0]['Area Terreno'].count(); print(f'Cantidad de registros sin area {sin_area}')

https://cienciadatos.gestionhseq.com/actividad4 8/14
Cantidad de registros sin area 423

11) Utilice gráficos para identificar valores atípicos


Ya se pueden visualizar en los puntos representados en los boxplot del punto anterior

# se busca relacion entre el estrato y el valor de la vivenda


ax = data.boxplot('Precio', by='Estrato_num'); plt.suptitle('');
plt.ylim(0,100_000_000)# se modifican los límites para observar mejor los datos
plt.ylabel('Valor') plt.xlabel('Estrato')
#plt.xticks(rotation=45);
ax.set_xticklabels(mapa.keys(), rotation='vertical', fontsize=10);

12) Realice histogramas de frecuencia


Se graficarán:

Cantidad de reportes por estrato


Cantidad de reportes por departamento
Rango de valores de vivienda

# se define el rango de valores a graficar


from math import ceil bins = 100
minimo = data['Precio'].min(axis=0);
maximo = data['Precio'].max(axis=0);

def get_hist_values(data, minimo, maximo, bins): values = list();


delta = ceil((maximo -minimo)/bins);
initvalue = minimo;
endvalue = minimo + delta; names = []
inits = []
ended = []
cantidad = [] k=1
while initvalue < maximo:
localmax = initvalue + delta + 0.01 names.append(k)
inits.append(initvalue) ended.append(localmax)
cantidad.append(data[(data['Precio'] >= initvalue) & (data['Precio'] < localmax)].shape[0]) initvalue = localmax
k +=1
print('Datos para construir el histograma');
res = pd.DataFrame({'id': names, 'cantidad': cantidad, 'inicial': inits,'final':ended});
return res

res = get_hist_values(data, minimo, maximo, bins) res.head(20)

Datos para construir el histograma

https://cienciadatos.gestionhseq.com/actividad4 9/14
id cantidad inicial final

0 1 364 63339.00 4586085.01

1 2 25 4586085.01 9108831.02

2 3 12 9108831.02 13631577.03

3 4 9 13631577.03 18154323.04

4 5 6 18154323.04 22677069.05

5 6 5 22677069.05 27199815.06

6 7 3 27199815.06 31722561.07

7 8 2 31722561.07 36245307.08

8 9 1 36245307.08 40768053.09

9 10 2 40768053.09 45290799.10

10 11 2 45290799.10 49813545.11

11 12 1 49813545.11 54336291.12

12 13 1 54336291.12 58859037.13

13 14 0 58859037.13 63381783.14

14 15 1 63381783.14 67904529.15

15 16 2 67904529.15 72427275.16

16 17 1 72427275.16 76950021.17

17 18 0 76950021.17 81472767.18

18 19 0 81472767.18 85995513.19

19 20 0 85995513.19 90518259.20

Con base en el punto anterior se nota que la mayor cantida de datos, 429, está hasta el valor de 76950021, por lo que se ajusta este como el
valor límite y se corre nuevamente la función

res = get_hist_values(data, minimo, 76950021 , bins=200) res.head(20)


#ax.set_xticklabels(res['inicial'], rotation='vertical', fontsize=10);
# se procede a graficar

Datos id
paracantidad inicial
construir el histograma final

0 1 325 63339.00 447773.01

1 2 7 447773.01 832207.02

2 3 7 832207.02 1216641.03

3 4 5 1216641.03 1601075.04

4 5 6 1601075.04 1985509.05

5 6 4 1985509.05 2369943.06

6 7 2 2369943.06 2754377.07

7 8 1 2754377.07 3138811.08

8 9 0 3138811.08 3523245.09

9 10 4 3523245.09 3907679.10

10 11 2 3907679.10 4292113.11

11 12 2 4292113.11 4676547.12

12 13 3 4676547.12 5060981.13

13 14 3 5060981.13 5445415.14

14 15 7 5445415.14 5829849.15

15 16 0 5829849.15 6214283.16

16 17 2 6214283.16 6598717.17

17 18 2 6598717.17 6983151.18

18 19 1 6983151.18 7367585.19

19 20 0 7367585.19 7752019.20

ax = plt.bar(res['id'], res['cantidad']); plt.ylabel("Cantidad");


plt.xlabel('Precios');
plt.title('histograma distribución de precios');

https://cienciadatos.gestionhseq.com/actividad4 10/14
14/10/23, 23:37 Estudio de caso: análisis exploratorio de datos — Actividad analítica de datos.

# gráfica ampliada
res = get_hist_values(data, minimo, 447773.01 , bins=200) res.head(20)

Datos id
paracantidad
construir elinicial
histograma final

0 1 1 63339.00 65262.01

1 2 0 65262.01 67185.02

2 3 1 67185.02 69108.03

3 4 2 69108.03 71031.04

4 5 0 71031.04 72954.05

5 6 0 72954.05 74877.06

6 7 59 74877.06 76800.07

7 8 0 76800.07 78723.08

8 9 0 78723.08 80646.09

9 10 0 80646.09 82569.10

10 11 0 82569.10 84492.11

11 12 1 84492.11 86415.12

12 13 1 86415.12 88338.13

13 14 0 88338.13 90261.14

14 15 0 90261.14 92184.15

15 16 0 92184.15 94107.16

16 17 0 94107.16 96030.17

17 18 0 96030.17 97953.18

18 19 0 97953.18 99876.19

19 20 8 99876.19 101799.20

# se procede a graficar
axis = plt.bar(res['id'], res['cantidad']);
plt.title('Histograma distribución de presios ampliado') plt.ylabel("Cantidad");
plt.xlabel('Precios');
#plt.tick_params(axis='x', length=0)

Función para mejorar automáticamente el rango para hacer el estudio, sacando los
datos abs
Para ello el rango a utilizar será

límite inferior: Q2-1.5*IQR


Límite superior: Q3+1.5*IQR

Donde Q2: es el cuartil 2, Q3: es el cuartil 3, IQR es el rango intercuartílico

11/14
14/10/23, 23:37 Estudio de caso: análisis exploratorio de datos — Actividad analítica de datos.

Función para mejorar el cálculo del número de bins en forma automática


Si bien el número de bins se puede poner de forma manual sería recomendable poder hacerlo de forma automática, para ello se utilizará la
fórmula de Sturge’s rule

import numpy as np
def get_rango(data: pd.DataFrame, colname: str): res = data[colname].describe()
q2 = res['25%']
q3 = res['75%'] iqr = q3-q2
minvalue = q2-1.5*iqr; maxvalue = q3+1.5*iqr;
bins = int(np.ceil(np.log2(data.shape[0])) + 1)
return (max([0,minvalue]), maxvalue, max([1, bins]))

maximo, minimo, bins = get_rango(data, 'Precio');


print(f'Rango sugerido para el histograma {maximo} - {minimo}, intervalos = {bins} ')

Rango sugerido para el histograma 0 - 2291100.0, intervalos = 10

res = get_hist_values(data, maximo, minimo, bins) res.head(20)

Datosidpara
cantidad inicial
construir el histograma final

0 1 285 0.00 229110.01

1 2 40 229110.01 458220.02

2 3 4 458220.02 687330.03

3 4 4 687330.03 916440.04

4 5 4 916440.04 1145550.05

5 6 4 1145550.05 1374660.06

6 7 3 1374660.06 1603770.07

7 8 4 1603770.07 1832880.08

8 9 2 1832880.08 2061990.09

9 10 3 2061990.09 2291100.10

axis = plt.bar(res['id'], res['cantidad']);


plt.title('Histograma distribución de precios') plt.ylabel("Cantidad");
plt.xlabel('Indicador de precios');

13 Use la herramienta para gráficos para determinar correlación entre variables


Del análisis de eliminaron las columnas de área y area construida por tener mas de 400 datos con valor cero

import seaborn as sns

corr = data[['Estrato_num','Codigo','Precio','Departamento']].corr()

sns.heatmap(corr, linewidths=0.5, annot=True);

12/14
14/10/23, 23:37 Estudio de caso: análisis exploratorio de datos — Actividad analítica de datos.
Con base en la gráfica se puede notar que la mayor relación está entre el estrato y el código de la vivienda, sin embargo como este último es
solo un consecutivo se puede concluir que por falta de información en cuanto a las áreas no es posible concluir sobre una relación al respecto

14) Realice y explique la eliminación de datos nulos y duplicados


Desde el punto 8 se eliminaron los datos duplicados y en el punto 7 se presentaron las columnas con valores nulos, ahora se procederá a
buscar los datos nulos en cuanto al precio

data.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 447 entries, 0 to 458 Data columns (total 13 columns):

# Column Non-Null Count Dtype

0 Codigo 447 non-null int64


1 Ciudad 447 non-null object
2 Departamento 447 non-null object
3 Barrio 57 non-null object
4 Direccion 447 non-null object
5 Area Terreno 447 non-null int64
6 Area Construida 447 non-null int64
7 Detalle Disponibilidad 447 non-null object
8 Estrato 447 non-null object
9 Precio 447 non-null float64
1 Tipo de Inmueble 447 non-null object
0
1 Datos Adicionales 92 non-null object
1
dtypes:
1 float64(1), int64(4), 447
Estrato_num object(8)
non-null int64
2
memory usage: 48.9+ KB

Se filtran los contenidos con filas que tengan valores nulos en alguna de las columnas

columns = [k for (k, value) in data.items()]

dt = data
for k in columns:
dt = dt[dt[k].notnull()]; dt.count()
#dropped = data.dropna(how='all', axis=1);
#dropped

Codigo37
Ciudad37
Departamento37
Barrio37
Direccion37
Area Terreno37
Area Construida37
Detalle Disponibilidad37
Estrato37
Precio37
Tipo de Inmueble37
Datos Adicionales37
Estrato_num37
dtype: int64

Resultado filas sin ningún valor nulo


dt.head(min([10,dt.shape[0]]))

13/14
14/10/23, 23:37 Estudio de caso: análisis exploratorio de datos — Actividad analítica de datos.

Area Area Detalle Tipo de Datos


Codigo Ciudad Departamento Barrio Direccion Estrato Precio Est
Terreno Construida Disponibilidad Adicionales
Inmue
KR 84
COMERCIALIZABLE ESTE INMUEBLE
CON
CL 10 LT #
8
LOTE PRESENTA ZONA
1 2363 BOGOTA CUNDINAMARCA TINTALA TRES 3.285750e+07
DE SAN 302079 0 CON COMERCIAL DE RESERVA VIAL,
JUAN DE RESTRICCION
Q...
CASTILLA...

CRA. 10
ESTE INMUEBLE
#11- 78/80 COMERCIALIZABLE
2 2575 SOGAMOSO BOYACÁ CENTRO CUATRO 1.376828e+08 CLINICA SE
Ó CL 12 # 9 165508 726900 CON
COMERCIALIZARÁ
- 77/85 Ó RESTRICCION
A TRAVÉS DE SU...
CALLE...

DESEAS INVERTIR
CALLE 39 COMERCIALIZABLE
11 10106 BARRANQUILLA ATLÁNTICO CENTRO ESTA ES LA
NO 43 58 62 0 0 CON DOS 8.000330e+06 LOCAL
OPORTUNIDAD
LC 1 RESTRICCION
LOCAL E...

CISA VENDE
VALLE DEL LT B PARTE LOTE SOLO LOS
12 11335 CALI CIUDADELA COMERCIALIZABLE RURAL 1.667784e+07
CAUC DEL PREDIO 43039968 0 FIDUCI VIVIENDA DERECHOS
A CHIPICHAPE
CHIPICHAPE A FIDUCIARIOS DEL
0...

BG 20 ET BODEGA EN
PARQU I
COMERCIALIZABLE
E PARQU
E PROINDIVISO.
14 11786 VILLA RICA CAUCA INDUSTRIAL INDUSTRIAL 3035300 1198100 CON INDUSTRIAL 7.090341e+07 BODEGA
CON BUENAS
CAUCADESA CAUCADESA RESTRICCION
ESPECIFICACI...
KM 43
...
PARQU LT 8 ET I COMERCIALIZABLE LOTE TERRENO
SANTANDER DE E
CAUCA PARQUE LOTE NETO , EN
15 11787 IND CON RURAL 1.416213e+07
QUILICHAO 4612600 0 INDUSTRI PROINDIVISO,
INDUSTRIAL RESTRICCION
CAUCADESA SEMI-URBAN...
CAUCADESA
CISA VENDE
RESERVA COMERCIALIZABLE LOTE
CALIMA EL VALLE DEL VEREDA DERECHOS
16 12112 FORESTAL 218786300 0 RURAL 2.406650e+07
FIDUCIA MIXT FIDUCIARIOS DEL
DARIEN CAUCA PALERMO
LT 1A O 9.48%\n\nF...

CISA VENDE

17 12113 CALIMA EL VALLE DEL VEREDA COMERCIALIZABLE LOTE DERECHOS


LT 4 7114300 74533 RURAL 2.700092e+07
DARIEN CAUCA PALERMO FIDUCIA FIDUCIARIOS DEL
VIVIEN
9.48%\n\nF...

CISA VENDE
18 12114 CALIMA EL VALLE DEL VEREDA COMERCIALIZABLE DERECHOS
LOTE
DARIEN CAUCA PALERMO LT 1B 17598200 0 RURAL 2.704525e+07 FIDUCIARIOS DEL
FIDU VIVIEN 9.48%\n\nF...

LOTE DE
19 12115 CALIMA EL VALLE DEL VEREDA COMERCIALIZABLE TERRENO QUE
LOTE
DARIEN CAUCA PALERMO LT 1C 6400000 70000 RURAL 1.042887e+07 HACE PARTE DEL
FIDU VIVIEN PROYECTO CA...

15) Agrupe columnas que considere pueden generar información importante

16) Cree nuevas columnas a partir de las existentes


Se creará una columna nivel que agrupa las columnas de estrato y barrio

data['Nivel'] = data.apply(lambda row: f'{row.Estrato_num} - {row.Barrio}', axis=1) data.head(10)

14/14
14/10/23, 23:37 Estudio de caso: análisis exploratorio de datos — Actividad analítica de datos.

Area
Codigo Ciudad Departamento Barrio Direccion Area Detalle Tipo de
Construida Disponibilidad Estrato Precio
Terre Inmue
SANTA COMERCIALIZABLE LOTE
0 2330 BOGOTA CUNDINAMARCA CL 10 SUR # 34B-24 LT 2 MZ X-46 TRES 1.342810e+08
559804 0 CON VIVIENDA
MATILDE (SANTA MATILDE...
RESTRICCION

COMERCIALIZABLE LOTE ES
KR 84 CON CL 10 LT # 8 DE
SAN PRE
1 2363 BOGOTA CUNDINAMARCA TINTALA 302079 0 CON TRES 3.285750e+07
JUAN DE CASTILLA... COMERCIAL DE R
RESTRICCION

ES
CRA. 10 #11- 78/80 Ó CL 12 # 9 - COMERCIALIZABLE
2 2575 SOGAMOSO BOYACÁ CENTRO 165508 726900 CON CUATRO 1.376828e+08 CLINICA
77/85 Ó CALLE... COM
RESTRICCION
A TR

COMERCIALIZABLE LOTE
LOTE 3 PARCELACIÓN LOS CERROS RURAL 5.520000e+06
3000000 0 CON VIVIENDA
3 2669 LA CALERA CUNDINAMARCA LA CALERA HACIENDA SAN RAFAEL
RESTRICCION

COMERCIALIZABLE LOTE
DG 140 # 67 - 30 IN 6 (ZONA DE COMERCIAL 1.380382e+08
1774266 0 CON VIVIENDA
4 4408 BOGOTA CUNDINAMARCA SUBA AFECTACIÓN PLAN...
RESTRICCION

CONDOMINIO LT 1 TAMBACU HO GIRARDOT COMERCIALIZABLE


5 5017 RICAURTE CUNDINAMARCA CAMPESTRE 2500263 514200 COMERCIAL 1.040734e+08 HOTEL
RESORT FIDUCIA
MONACO

LT # LOS
LOTE
6 5287 BOGOTA CUNDINAMARCA NaN

VEREDA C
899/900/901/902/903/904/905/90 2240 0 COMERCIALIZABLE COMERCIAL 5.143040e+05
7 5616 CHIA CUNDINAMARCA 6 COMERCIAL T
FONQUETA CEMENTERI..
.
COMERCIALIZABLE
1113000 57000 CON RURAL 2.785554e+07 FINCA
FINCA SAN ANTONIO DE RESTRICCION
LOS VIENTOS - VEREDA
FONQ... COMERCIALIZABLE

VEREDA DE
8 7394 BITUIMA CUNDINAMARCA FINCA BUENAVISTA Y BUENOS
CAMBULAR 18000000 0 CON RURAL 4.806000e+06 FINCA
AIRES
RESTRICCION

COMERCIALIZABLE
9 7539 TENJO CUNDINAMARCA NaN CHURUGUACO LA GUACA 0 0 CON RURAL 6.369860e+06 FINC
RESTRICCION

17) Identifique columnas que no aportan de acuerdo con su pregunta objetivo


Acorde con la información analizada se idenfica que las columnas que no aportan para el análisis son

1. Codigo
2. Area - porque la mayoría son datos sin reportar o cero
3. Detalle Disponibilidad
4. Direccion

18) Realice conclusiones sobre las variables que considere tienen mayor
relevancia
Conclusiones:

1. No se pudo realizar el análisis concluyente por no porder calcular el valor por metro cuadrado
2. La mayor cantidad de datos reportador fueron hast 458_220 millones
3. La mayor variabilidad de precios se encuentra en el sector rural.
4. La mayor información disponible está para los locales con 301 muestras.
5. Para realizar una compra se deberá completar la información de las áreas y tomar una mejor decisión con base en la evidencia

19) Dejar documentado usando gráficos y capturas de pantalla todo el proceso


realizado.
Se hizo por este medio

15/14

También podría gustarte