Cargar datos con dataset: estimación del precio de una vivienda

| Última modificación: 21 de octubre de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En este pos veremos un ejercicio de cargar datos con dataset sobre estimación del precio de una vivienda.

En un artículo anterior hicimos un análisis exploratorio básic con el dataset con el que trabajaremos a continuación. El que escogimos pertenece a la plataforma Kaggle y es sobre estimación de precios de viviendas en USA.

Recordemos que el conjunto de datos que hemos escogido ya ha sido limpiado, ha pasado por un preprocesamiento. Esto lo podemos analizar observando las variables categóricas, que ya han sido codificadas.

Ejercicio de cargar datos con dataset

Podemos asumir, a efectos de este ejercicio, que kc_house_data.csv contiene el subconjunto de entrenamiento y no el de test. Esta es la razón por la que ahora no estamos dividiendo los datos, porque se asume que ya han sido divididos.

#Ejercicio de cargar datos con dataset
house_data = pd.read.csv ("./data/kc house data.csv") #cargamos fichero
house_data.head (5) #visualizamos 5 primeras filas
Ejercicio de cargar datos con dataset


Podemos observar que todas las variables son de tipo numérico, así que no tenemos que codificar ninguna de ellas.

De todas formas, para verificar que, en efecto, todas las variables son de tipo numérico, podemos escribir lo siguiente:

house_data.dtypes

El resultado sería el siguiente:

idint64
dateobject
priefloat64
bedroomsint64
bathroomsfloat64
sqft_livingint64
sqft_lotint64
floorsfloat64
waterfrontint64
viewint64
conditionint64
gradeint64
sqft_aboveint64
sqft_basementint64
yr_builtint64
yr_renovatedint64
zipcodeint64
latfloat64
longifloat64
sqft_living15int64
sqft_lot15int64
dtype: object

Con esta tabla comprobamos que todas las variables son de tipo numérico, ya que su tipo son solo int64 y float64.

Por otro lado, los atributos id y date no nos aportan información; los descartamos del DataFrame:

#Ejercicio de cargar datos con dataset
#Eliminamos las columnas id y date
house_data = house_data.dropit (['id', 'date'], axis = 1)
house_data.head (5)

El eje o axis = 1 lo ponemos cuando queremos quitar toda la columna. Nos quedaría un resultado así:

Ejercicio de cargar datos con dataset

Si tenemos muchas columnas de la misma información, podemos añadirle al house_data.head (5) un .T, de forma que quedaría house_data.head (5).T, con lo cual se traspondrán algunas columnas y, así, podrás observarlas de manera cómoda y fácil. Pasamos de la imagen de arriba a esto:

Ejercicio de cargar datos con dataset

Antes de seguir con nuestro análisis, vamos a transformar las variables de superficie para expresarlas en m2, porque ahora mismo están en pies al cuadrado. Posteriormente, renombraremos las columnas:

#Ejercicio de cargar datos con dataset
#convertir las variables de pies al cuadrado a metros al cuadrado
feetFeatures = ['sqft_living', 'sqft_lot', 'sqft_above', 'sqft_basement', 'sqft_living15', 'sqft_lot15']
house_data [feetFeatures] = house data [ feetfeatures].apply (lambda x: x * 0.3048 * 0.3048)
#renombramos
house_data.columns = ['price', 'bedrooms', 'bathrooms', 'sqm_living', 'sqm_lot', 'floors', 'waterfront', 'view', 'condition', 'grade', 'sqm_above', 'sqm basement', 'yr_built', 'yr_renovated', 'zip_code', 'lat', 'long', 'sqm_living15', sqm_lot15']
#Ejercicio de cargar datos con dataset
#visualizamos
house_data.head (5)

A cada uno de los valores propuestos en el anterior algoritmo lo estamos transformando en ese mismo valor * 0.3048 * 0.3048. ¿Por qué este valor de 0.3048? Pues porque es la equivalencia que hay para pasar de pies a metros, y como es al cuadrado, tenemos que multiplicarlo dos veces por el mismo valor.

El modo de hacer esta transformación con Pandas es muy cómoda, porque, como vemos, tenemos una lista con las columnas (feetFeatures = [‘sqft_living’, ‘sqft_lot’, ‘sqft_above’, ‘sqft_basement’, ‘sqft_living15’, ‘sqft_lot15’]), y en el dataframe que tenemos cogemos solo las columnas transformadas (feetFeatures).

Esas columnas transformadas se van a transformar con el .apply en su mismo valor, pero multiplicado * 0.3048 * 0.3048.

Si queremos observar solo las columnas transformadas del dataframe, lo que tenemos que hacer es lo siguiente:

#Ejercicio de cargar datos con dataset
feetFeatures = ['sqft_living', 'sqft_lot', 'sqft_above', 'sqft_basement', 'sqft_living15', 'sqft_lot15']
house_data[featFeatures].head ()

Y nos quedaría algo así:

Aquí lo que estamos diciéndole al algoritmo es que nos dé toda la información de house_data de todas las columnas nombradas.

Si separamos toda la información que tenemos, la tendríamos que reorganizar así:

#Ejercicio de cargar datos con dataset
feetFeatures = ['sqft_living', 'sqft_lot', 'sqft_above', 'sqft_basement', 'sqft_living15', 'sqft_lot15']
house_data [feetFeatures] = house data [ feetfeatures].apply (lambda x: x * 0.3048 * 0.3048)
house_data.head ().T
Ejercicio de cargar datos con dataset

Como podemos observar, solo han cambiado los valores que hemos preconfigurado, valores como el sqft_living, el sqft_loft y todos los otros valores que hemos guardado en el nuevo dataframe y que aquí ya están transformados.

Si quieres seguir aprendiendo sobre este tema y muchísimas otras materias que mejorarán tus posibilidades de empleo, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, con el que te convertirás en un profesional en pocos meses. ¡Anímate a cambiar tu vida y solicita información!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado