Ejercicio análisi exploratorio parte 1

Utilizando los datos sobre automoviles extraídos en un archivo csv via webscraping (están almacenados en un archivo csv en la misma ruta que este notebook), responda a las siguientes preguntas:

  1. La asimetría de la variable caballos_potencia es negativa?

  2. Entre las variables: caballos_potencia, desplazamiento, mpg y aceleracion, ¿cuáles tienen valores atípicos en ambos extremos?

  3. Entre las variables: caballos_potencia, desplazamiento, mpg y aceleracion, ¿cuáles no tienen valores atípicos?

  4. Entre las variables: caballos_potencia, desplazamiento, mpg y aceleracion,, ¿cuáles son las variables con mayor y menor asimetría?

  5. Entre las variables: caballos_potencia, desplazamiento, mpg y aceleracion, muestre los valores atípicos de aquellas variables que los tengan en ambos extremos.

import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

automoviles = pd.read_csv('./csv/datos_automoviles.csv')
automoviles.head()
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Input In [1], in <module>
      2 import pandas as pd
      3 import numpy as np
----> 4 import matplotlib.pyplot as plt
      5 import seaborn as sns
      7 automoviles = pd.read_csv('./csv/datos_automoviles.csv')

ModuleNotFoundError: No module named 'matplotlib'

1. La asimetría de la variable caballos_potencia es negativa?

print('Asimetría de caballos_potencia')
automoviles['caballos_potencia'].skew()
Asimetría de caballos_potencia
1.034079427703104

2. Entre las variables: caballos_potencia, desplazamiento, mpg y aceleracion, ¿cuáles tienen valores atípicos en ambos extremos?

Para saber cúales variables tiene valores atípicos, se puede utilizar gráficos o métido el analítico. En este caso, se utilizarán gráficas de dos tipos:

  • Una será una gráfica de distribución donde se dibujarán líneas verticales a la altura de ambos valores atípicos.

  • La otra, un gráfico de caja el cual nos señala mediante un círculo si existen o no valores atípicos

Cabe resaltar que la primera manera no indica de manera precisa la existencia de valores atípicos, pero se lo muestra por propósitos ilustrativos. En cambio, el gráfico de caja si indica con exactidud si existen o no valores atípicos.

def graficar_distribucion_con_valores_atipicos(columna):
    q1 = automoviles.describe()[columna]['25%']
    q3 = automoviles.describe()[columna]['75%']
    iqr = q3 - q1
    limite_derecho = q3 + 1.5 * iqr
    limite_izquierdo = q1 - 1.5 * iqr

    sns.kdeplot(automoviles[columna], shade=True)
    plt.axvline( limite_derecho, color='b')
    plt.axvline( limite_izquierdo, color='b')

2.1 Valores atípicos caballos_potencia

graficar_distribucion_con_valores_atipicos('caballos_potencia')
../../_images/Ejercicio parte 1_7_0.png
automoviles['caballos_potencia'].plot.box()
<AxesSubplot:>
../../_images/Ejercicio parte 1_8_1.png

2.2 Valores atípicos desplazamiento

graficar_distribucion_con_valores_atipicos('desplazamiento')
../../_images/Ejercicio parte 1_10_0.png
automoviles['desplazamiento'].plot.box()
<AxesSubplot:>
../../_images/Ejercicio parte 1_11_1.png

2.3 Valores atípicos mpg

graficar_distribucion_con_valores_atipicos('mpg')
../../_images/Ejercicio parte 1_13_0.png
automoviles['mpg'].plot.box()
<AxesSubplot:>
../../_images/Ejercicio parte 1_14_1.png

2.4 Valores atípicos aceleracion

graficar_distribucion_con_valores_atipicos('aceleracion')
../../_images/Ejercicio parte 1_16_0.png
automoviles['aceleracion'].plot.box()
<AxesSubplot:>
../../_images/Ejercicio parte 1_17_1.png

Respuesta pregunta 2: la aceleración es la única variable que tiene valores atípicos en ambos extremos

3. Entre las variables: caballos_potencia, desplazamiento, mpg y aceleracion, ¿cuáles no tienen valores atípicos?

Sobre la base de los gráficos hechos en el anterior inciso, desplazamiento es la variable que no tiene valores atípicos

4. Entre las variables: caballos_potencia, desplazamiento, mpg y aceleracion, ¿cuáles son las variables con mayor y menor asimetría?

print('caballos_potencia: ', automoviles['caballos_potencia'].skew())
print('desplazamiento: ', automoviles['desplazamiento'].skew())
print('mpg: ', automoviles['mpg'].skew())
print('aceleracion:', automoviles['aceleracion'].skew())
caballos_potencia:  1.034079427703104
desplazamiento:  0.6941299865999901
mpg:  0.45706634399491936
aceleracion: 0.23022375946556034

5. Entre las variables: caballos_potencia, desplazamiento, mpg y aceleracion, muestre los valores atípicos de aquellas variables que los tengan en ambos extremos

Como se pudo observar en el inciso 2 la variable aceleracion es la única que tiene valores atípicos en ambos extremos.

q1 = automoviles.describe()['aceleracion']['25%']
q3 = automoviles.describe()['aceleracion']['75%']
iqr = q3 - q1
limite_derecho = q3 + 1.5 * iqr
limite_izquierdo = q1 - 1.5 * iqr

Valores atípicos menores o iguales al límite inferior:

automoviles.loc[automoviles['aceleracion'] <= limite_izquierdo]
nombre cilindros peso anio territorio aceleracion mpg caballos_potencia desplazamiento
16 Plymouth 'Cuda 340 8 3609 1970 USA 8.0 14.0 160.0 340.0
17 Ford Mustang Boss 302 8 3353 1970 USA 8.0 NaN 140.0 302.0

Valores atípicos mayores o iguales al límite superior:

automoviles.loc[automoviles['aceleracion'] >= limite_derecho]
nombre cilindros peso anio territorio aceleracion mpg caballos_potencia desplazamiento
66 Volkswagen Type 3 4 2254 1972 Europe 23.5 23.0 54.0 97.0
306 Peugeot 504 4 3190 1979 Europe 24.8 27.2 71.0 141.0
333 Vw Dasher (Diesel) 4 2335 1980 Europe 23.7 43.4 48.0 90.0
402 Vw Pickup 4 2130 1982 Europe 24.6 44.0 52.0 97.0
  • Hay alguna relacion entre el territorio y los caballos de potencia?

  • Hay correlación entre los caballos de potencia y las millas por galón?

  • Si existe es un relación, ambas variables se mueven en la misma dirección?

  • Compruebe la dirección de la relación con una visualización.

def territorio_escrito_a_num(territorio):
   return territorio.map({ 'Europe': 1, 'USA': 2, 'Japan': 3 })

automoviles['territorio_num'] = territorio_escrito_a_num(automoviles['territorio'])
automoviles
nombre cilindros peso anio territorio aceleracion mpg caballos_potencia desplazamiento territorio_num
0 Chevrolet Chevelle Malibu 8 3504 1970 USA 12.0 18.0 130.0 307.0 2
1 Buick Skylark 320 8 3693 1970 USA 11.5 15.0 165.0 350.0 2
2 Plymouth Satellite 8 3436 1970 USA 11.0 18.0 150.0 318.0 2
3 Amc Rebel Sst 8 3433 1970 USA 12.0 16.0 150.0 304.0 2
4 Ford Torino 8 3449 1970 USA 10.5 17.0 140.0 302.0 2
... ... ... ... ... ... ... ... ... ... ...
401 Ford Mustang Gl 4 2790 1982 USA 15.6 27.0 86.0 140.0 2
402 Vw Pickup 4 2130 1982 Europe 24.6 44.0 52.0 97.0 1
403 Dodge Rampage 4 2295 1982 USA 11.6 32.0 84.0 135.0 2
404 Ford Ranger 4 2625 1982 USA 18.6 28.0 79.0 120.0 2
405 Chevy S-10 4 2720 1982 USA 19.4 31.0 82.0 119.0 2

406 rows × 10 columns

automoviles.corr()
cilindros peso anio aceleracion mpg caballos_potencia desplazamiento territorio_num
cilindros 1.000000 0.895220 -0.360762 -0.522452 -0.775396 0.844158 0.951787 -0.027908
peso 0.895220 1.000000 -0.315389 -0.430086 -0.831741 0.866586 0.932475 -0.094713
anio -0.360762 -0.315389 1.000000 0.301992 0.579267 -0.424419 -0.381714 0.143544
aceleracion -0.522452 -0.430086 0.301992 1.000000 0.420289 -0.697124 -0.557984 -0.062585
mpg -0.775396 -0.831741 0.579267 0.420289 1.000000 -0.778427 -0.804203 0.127164
caballos_potencia 0.844158 0.866586 -0.424419 -0.697124 -0.778427 1.000000 0.898326 -0.030029
desplazamiento 0.951787 0.932475 -0.381714 -0.557984 -0.804203 0.898326 1.000000 -0.040180
territorio_num -0.027908 -0.094713 0.143544 -0.062585 0.127164 -0.030029 -0.040180 1.000000

Los caballos de potención tienen una relación con las millas por galón, debido el valor de correlación es 0.77 y es próximo a -1. Lo cual indica una relación inversa.

automoviles.plot.scatter(x='caballos_potencia', y='mpg', color='c', title='scatter plot : Tip by Total bill', alpha=0.1)
<AxesSubplot:title={'center':'scatter plot : Tip by Total bill'}, xlabel='caballos_potencia', ylabel='mpg'>
../../_images/Ejercicio parte 1_32_1.png

No se mueven en la misma dirección

automoviles.cov()
cilindros peso anio aceleracion mpg caballos_potencia desplazamiento territorio_num
cilindros 2.931491 1298.254662 -2.315526 -2.507662 -10.308911 56.184831 170.982829 -0.029265
peso 1298.254662 717416.332056 -1001.421626 -1021.220272 -5505.211745 28538.206404 82868.813665 -49.132056
anio -2.315526 -1001.421626 14.053032 3.173656 16.741163 -61.462080 -150.138405 0.329563
aceleracion -2.507662 -1021.220272 3.173656 7.858821 9.058930 -75.801907 -164.122683 -0.107452
mpg -10.308911 -5505.211745 16.741163 9.058930 61.089611 -233.857926 -655.402318 0.608486
caballos_potencia 56.184831 28538.206404 -61.462080 -75.801907 -233.857926 1503.018239 3666.724846 -0.713434
desplazamiento 170.982829 82868.813665 -150.138405 -164.122683 -655.402318 3666.724846 11008.722272 -2.581919
territorio_num -0.029265 -49.132056 0.329563 -0.107452 0.608486 -0.713434 -2.581919 0.375090