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

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

 

[wp_ad_camp_1]

Índice()

    Análisis estadístico descriptivo

    Primero echemos un vistazo a las variables utilizando un método de descripción.

    La función "describe" automáticamente calcula estadísticas básicas para todas las variables continuas. Cualquier valor de NaN se omite automáticamente en estas estadísticas.

    Esta publicación es la continuación del post anterior Análisis de datos exploratorios con Python

    Esto mostrará:

    • el recuento de esa variable.
    • la media aritmética.
    • la desviación estándar (std).
    • el valor mínimo.
    • el IQR (rango intercuartil: 25%, 50% y 75%).
    • el valor máximo.

    Podemos aplicar el método "describe" de la siguiente manera:

    df.describe()
    

     

    analisisdescriptivo2

    La configuración predeterminada de "describe" omite las variables de tipo objeto. Podemos aplicar el método "describe" en las variables de tipo 'objeto' de la siguiente manera:

    df.describe(include=['object'])
    

     

    Value Counts / Contar Valores

    El conteo de valores es una buena forma de entender cuántas unidades de cada característica / variable tenemos. Podemos aplicar el método "value_counts" en la columna 'drive-wheels'. No olvide que el método "value_counts" solo funciona en series Pandas, no en Pandas Dataframes. Como resultado, solo incluimos un soporte "df ['drive-wheels']" no dos soportes "df [['drive-wheels']]".

    df['drive-wheels'].value_counts().to_frame()
    

     

    analisisdescriptivo3

    Repitamos los pasos anteriores, pero guardemos los resultados en el dataframe "drive_wheels_counts" y cambiemos el nombre de la columna 'drive-wheels' a 'value_counts'.

    [wp_ad_camp_2]

    drive_wheels_counts = df['drive-wheels'].value_counts().to_frame()
    drive_wheels_counts.rename(columns={'drive-wheels': 'value_counts'}, inplace=True)
    drive_wheels_counts
    

     

    analisisdescriptivo4

    Podemos repetir el proceso anterior para la variable 'engine-location'.

    engine_loc_counts = df['engine-location'].value_counts().to_frame()
    engine_loc_counts.rename(columns={'engine-location': 'value_counts'}, inplace=True)
    engine_loc_counts.index.name = 'engine-location'
    engine_loc_counts.head(10)
    

     

    analisisdescriptivo5

    Examinar los recuentos de valores de la ubicación del motor no sería una buena variable predictiva del precio. Esto se debe a que solo tenemos tres autos con motor trasero y 198 con motor delantero, este resultado es sesgado. Por lo tanto, no podemos sacar ninguna conclusión sobre la ubicación del motor.

     

    Básicos de agrupar

    El método "groupby" agrupa los datos por diferentes categorías. Los datos se agrupan en función de una o varias variables y el análisis se realiza en los grupos individuales.

    Por ejemplo, agrupemos por la variable "drive-wheels". Sabemos que hay 3 categorías diferentes de ruedas.

    Si queremos saber, en promedio, qué tipo de rueda es más valiosa, podemos agrupar  "drive-wheels" y luego promediarlas.

    Podemos seleccionar las columnas 'drive-wheels', 'body-style' y 'price', luego asignarlo a la variable "df_group_one".

    df_group_one = df[['drive-wheels','body-style','price']]
    df_group_one.head(10)
    

     

    analisisdescriptivo6

    Luego podemos calcular el precio promedio para cada una de las diferentes categorías de datos.

    Te puede interesar:  Análisis de Datos Exploratorios con Python

    df_group_one = df_group_one.groupby(['drive-wheels'],as_index=False).mean()
    df_group_one
    

     

    analisisdescriptivo7

    Según nuestros datos, parece que los vehículos con tracción trasera son, en promedio, los más caros, mientras que las 4 ruedas y las ruedas delanteras tienen aproximadamente el mismo precio.

    [wp_ad_camp_3]

    También puede agrupar con múltiples variables. Por ejemplo, agrupemos por 'drive-wheels' y 'body-style'. Esto agrupa el marco de datos por las combinaciones únicas 'drive-wheels' y 'body-style'. Podemos almacenar los resultados en la variable 'grouped_test1'.

    df_gptest = df[['drive-wheels','body-style','price']]
    grouped_test1 = df_gptest.groupby(['drive-wheels','body-style'],as_index=False).mean()
    grouped_test1
    

     

    analisisdescriptivo9

    Estos datos agrupados son mucho más fáciles de visualizar cuando se convierten en una tabla dinámica. Una tabla dinámica es como una hoja de cálculo de Excel, con una variable a lo largo de la columna y otra a lo largo de la fila. Podemos convertir el marco de datos en una tabla dinámica utilizando el método "pivote" para crear una tabla dinámica a partir de los grupos.

    En este caso, dejaremos la variable drive-wheels como las filas de la tabla y giraremos el body-style para convertirlas en las columnas de la tabla:

    grouped_pivot = grouped_test1.pivot(index='drive-wheels',columns='body-style')
    grouped_pivot
    

     

    analisisdescriptivo10

    A menudo, no tendremos datos para algunas de las celdas dinámicas. Podemos llenar estas celdas faltantes con el valor 0, pero cualquier otro valor también podría usarse. Cabe mencionar que la falta de datos es un tema bastante complejo y es un curso completo por sí solo.

    grouped_pivot = grouped_pivot.fillna() 
    grouped_pivot
    

     

    Mapas de calor

    Usemos un mapa de calor para visualizar la relación entre Body Style vs Price.

    plt.pcolor(grouped_pivot)
    plt.colorbar()
    plt.show()
    

     

    analisisdescriptivo11

    El mapa de calor traza la variable objetivo (precio) proporcional al color con respecto a las variables 'drive-wheel' y 'body-style' en los ejes vertical y horizontal, respectivamente. Esto nos permite visualizar cómo se relaciona el precio con 'drive-wheel' y 'body-style'.

    [wp_ad_camp_4]

    Las etiquetas predeterminadas no nos transmiten información útil. Cambiemos eso:

    fig, ax = plt.subplots()
    im = ax.pcolor(grouped_pivot, cmap='RdBu')
    
    #label names
    r
    ow_labels = grouped_pivot.columns.levels[1]
    col_labels = grouped_pivot.index
    
    #move ticks and labels to the center
    ax.set_xticks(np.arange(grouped_pivot.shape[1]) + 0.5, minor=False)
    ax.set_yticks(np.arange(grouped_pivot.shape[]) + 0.5, minor=False)
    
    #insert labels
    ax.set_xticklabels(row_labels, minor=False)
    ax.set_yticklabels(col_labels, minor=False)
    
    #rotate label if too long
    plt.xticks(rotation=90)
    
    fig.colorbar(im)
    plt.show()
    

     

    analisisdescriptivo12

     

    La visualización es muy importante en la ciencia de datos, y los paquetes de visualización de Python proporcionan una gran libertad. Vamos a profundiza sobre esto en otras publicaciones.

    La pregunta principal que queremos responder en este módulo es "¿Cuáles son las características principales que tienen el mayor impacto en el precio del automóvil?".

    Te puede interesar:  Los fundamentos de las matrices NumPy | Numpy Arrays - Guía 2021

    Para obtener una mejor medición de las características importantes, observamos la correlación de estas variables con el precio del automóvil, en otras palabras: ¿cómo depende el precio del automóvil de esta variable?

     

    Correlación y causalidad

    Correlación: una medida del grado de interdependencia entre variables.

    Causalidad: la relación entre causa y efecto entre dos variables.

    Es importante saber la diferencia entre estos dos y que la correlación no implica causalidad. Determinar la correlación es mucho más simple que la causalidad determinante ya que la causalidad puede requerir experimentación independiente.

    Correlación de Pearson

    La correlación de Pearson mide la dependencia lineal entre dos variables X e Y.

    El coeficiente resultante es un valor entre -1 y 1 inclusive, donde:

    • 1: correlación lineal positiva total.
    • 0: Sin correlación lineal, las dos variables probablemente no se afectan entre sí.
    • -1: correlación lineal negativa total.

    Correlación de Pearson es el método predeterminado de la función "corr". Como antes, podemos calcular la correlación de Pearson de las variables 'int64' o 'float64'.

    df.corr()
    

     

    1. cloud computing dice:

      very nice blog have a good info.

    2. MarkAcuri dice:

      Muchas gracias por el tutorial, me cae como anillo al dedo.

    3. CarlosP dice:

      Justo lo que andaba buscando para un proyecto de la Universidad. Muchas gracias!

      1. Rubén dice:

        Enhorabuena!

    4. Stan dice:

      🤯🤯🤯

    5. Lorena dice:

      Todo bien, solo que hay unas partes que no comprendí =(

    6. Andrade dice:

      Gracias! Justo lo que estaba buscando.

    7. Dina dice:

      Thank you!

    8. Barcia dice:

      Gracias por el tutorial!

    9. Angel Revilla dice:

      Todo bien! Unas partes aún tengo duda pero igual muchas gracias

    10. Marcos Cáceres dice:

      ¿Sabes cómo hacer para que te muestre la tabla anova completa y no solo los valores? Lo he hecho en excel pero necesito en python. Agradecería tu pronta respuesta.

      1. Rubén dice:

        Te cuento que yo también tuve esa duda, y me tocó presentar la tabla en excel pero los otros cálculos en python. Ya estoy viendo cómo hacerlo.

    11. Allieza dice:

      I think the admin of this web page is actually working
      hard in favor of his site, because here every stuff is quality
      based data.

    12. Andersson dice:

      Hola, creo que este trabajo es excelente, solo falta complementarlo con el aprendizaje en un red neuronal densa (al menos como un ejemplo) y ver si la predicción del precio es acertada.

      1. Rubén dice:

        Sí!
        Aún queda mucho por explicar. Gracias por el comentario.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir