Análisis de Datos Exploratorios con Python

En esta sección, exploraremos varios métodos para ver si ciertas características  se pueden usar para predecir el precio del automóvil.

Análisis de Datos Exploratorios con Python

 

¿Cuáles son las principales características que tienen el mayor impacto en el precio del automóvil?

Importando los datos

import pandas as pd
import numpy as np

 

Cargamos los datos y los guardamos en un dataframe

path='https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/DA0101EN/automobileEDA.csv'
df = pd.read_csv(path)
df.head(11).transpose()

 

analisisdatos1

 

Análisis de patrones de características individuales mediante visualización

Para instalar seaborn usamos  pip que es el administrador de paquetes de python.

%%capture
! pip install seaborn

 

Importe los paquetes de visualización «Matplotlib» y «Seaborn», no se olvide de «% matplotlib en línea» para dibujar en el mismo cuaderno Jupyter.

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline 

 

¿Cómo elegir el método de visualización correcto?

Al visualizar variables individuales, es importante entender primero con qué tipo de variable está tratando. Esto nos ayudará a encontrar el método de visualización correcto para esa variable.

# lista de los tipos de datos para cada columna
print(df.dtypes)

 

por ejemplo, podemos calcular la correlación entre variables de tipo «int64» o «float64» utilizando el método «corr»:

df.corr()

 

analisisdatos2

Los elementos diagonales son siempre uno; estudiaremos la correlación más precisamente la correlación de Pearson y la tabla anova en profundidad al final de este post.

Si queremos encontrar la correlación entre ciertas columans.

df[['bore', 'stroke','compression-ratio' ,'horsepower']].corr()

 

Variables numéricas continuas:

Las variables numéricas continuas son variables que pueden contener cualquier valor dentro de cierto rango. Las variables numéricas continuas pueden tener el tipo «int64» o «float64». Una excelente manera de visualizar estas variables es mediante el uso de diagramas de dispersión con líneas ajustadas.

Para comenzar a comprender la relación (lineal) entre una variable individual y el precio. Podemos hacer esto usando «regplot», que traza el diagrama de dispersión más la línea de regresión ajustada para los datos.

Veamos varios ejemplos de diferentes relaciones lineales:

Relación lineal fuerte

Relación lineal positiva
Busquemos el diagrama de dispersión de «tamaño del motor» y «precio»

sns.regplot(x="engine-size", y="price", data=df)
plt.ylim()

 

analisisdatos3

A medida que aumenta el tamaño del motor, aumenta el precio: esto indica una correlación directa positiva entre estas dos variables. El tamaño del motor parece ser un buen predictor de precio ya que la línea de regresión es casi una línea diagonal perfecta.

Podemos examinar la correlación entre ‘tamaño del motor’ y ‘precio’ y ver que es aproximadamente 0.87

df[["engine-size", "price"]].corr()

analisisdatos4

 

 

 

Relación lineal negativa

Ahora veremos con el mpg en carretera ya que es una variable predictiva potencial de precio.

sns.regplot(x="highway-mpg", y="price", data=df)

 

analisisdatos5

A medida que aumenta el mpg en carretera, el precio baja: esto indica una relación inversa / negativa entre estas dos variables. El mpg en carretera podría ser un predictor de precio.

Podemos examinar la correlación entre ‘highway-mpg’ y ‘price’ y ver que es aproximadamente -0.704

df[['highway-mpg', 'price']].corr()

analisisdatos6

Relación lineal débil

sns.regplot(x="peak-rpm", y="price", data=df)

 

analisisdatos7

Las rpm máximas no parecen ser un buen predictor del precio, ya que la línea de regresión está cerca de la horizontal. Además, los puntos de datos están muy dispersos y lejos de la línea ajustada, lo que muestra mucha variabilidad. Por lo tanto, no es una variable confiable.

Podemos examinar la correlación entre ‘peak-rpm’ y ‘price’ y ver que es aproximadamente -0.101616

df[['peak-rpm','price']].corr()

 

analisisdatos8

 

Variables categóricas

Estas son variables que describen una ‘característica’ de una unidad de datos y se seleccionan de un pequeño grupo de categorías. Las variables categóricas pueden tener el tipo «objeto» o «int64». Una buena forma de visualizar variables categóricas es mediante el uso de diagramas de caja.

Veamos la relación entre «body-style» y «price».

sns.boxplot(x="body-style", y="price", data=df)

 

analisisdatos9

Vemos que las distribuciones de precios entre las diferentes categorías de estilo de cuerpo tienen una superposición significativa, por lo que el estilo de cuerpo no sería un buen predictor del precio. Examinemos la ubicación del motor «engine-location» y el «precio» del motor:

sns.boxplot(x="engine-location", y="price", data=df)

 

analisisdatos10

Aquí vemos que la distribución del precio entre estas dos categorías de ubicación del motor, delantera y trasera, es lo suficientemente distinta como para tomar la ubicación del motor como un buen predictor potencial del precio.

Examinemos «drive-wheels» y «price».

sns.boxplot(x="drive-wheels", y="price", data=df)

 

analisisdatos11

Aquí vemos que la distribución de precios entre las diferentes categorías de drive-wheels es diferente; como tales, drive-wheels podría ser un predictor de precio.

Dado que lo siguiente es Análisis estadístico descriptivo y es mucho contenido, juzgo conveniente explicarlo en otra publicación.

Pueden verla en este enlace https://rubenjromo.com/analisis-estadistico-descriptivo-con-python/

También les comparto el código en github el cual fue usado en esta publicación, adicionalmente pueden descargar el notebook para su uso personal exclusivamente con fines didácticos.

https://github.com/rjromo/rubenjromo.com/blob/master/An%C3%A1lisis_de_Datos_Exploratorios.ipynb

Previous

Flutter Arquitectura Limpia [5] – Contratos de fuentes de datos

Análisis estadístico descriptivo con Python / Anova, Pearson y Mapas de Calor

Next

Deja un comentario