3. Resultados mediante ProfileReport de Pandas

Pandas-profiling o ProfileReport de Pandas, es una biblioteca de Python que permite generar informes HTML interactivos basados en DataSet, utilizando estos informes se puede:

  • Explorar los datos: aprovechando la vista completa de la distribución de los datos, incluyendo estadísticas descriptivas, histogramas, gráficos de dispersión y correlogramas.
  • Identificar patrones y anomalías: muestra los diferentes valores atípicos, valores perdidos y correlaciones interesantes en los datos.
  • Limpiar y preparar los datos: detecta automáticamente tipos de datos incorrectos, valores faltantes y valores inconsistentes y ayuda a corregirlos.
  • Comprender mejor los datos: ofrece una mejor comprensión de la estructura, el contenido y las relaciones entre las variables del DataSet analizado.



Esta herramienta ayuda mucho en el análisis y diagnóstico de una base de datos, mediante los informes automáticos se puede:

  • Acelerar los análisis de datos: permite un ahorro de tiempo en la exploración manual de los datos y la generación de informes.
  • Mejorar la calidad de los datos: se utiliza para detectar y corregir errores en los datos antes de realizar análisis.
  • Mostrar los hallazgos: es de utilidad para compartir fácilmente informes interactivos con los stakeholders.
  • Documentar los análisis: permite crear informes permanentes que documenten el proceso de análisis de datos.
  •  
    Para un diagnóstico con el ProfileReport es aconsejable, antes de generar un informe tener un DataSet limpio y ordenado, sin valores inconsistentes o duplicados, ajustar las opciones de configuración para generar un informe que se adapte a las necesidades, el informe de pandas-profiling contiene una gran cantidad de información, se deben explorar con calma las diferentes secciones y comprender los diferentes indicadores.

    Teniendo en cuenta el ejemplo del DataSet de diagnóstico de predicción de diabetes, el cual se puede descargar de https://www.kaggle.com/datasets/iammustafatz/diabetes-prediction-dataset en el cual se incluyen características como edad, sexo, índice de masa corporal (IMC), hipertensión, enfermedades cardíacas, antecedentes de tabaquismo, nivel de HbA1c y nivel de glucosa en sangre, se pueden diagnosticar los datos en siete diferentes secciones:

    1. Overview (Descripción general)

    En esta sección se describen las características generales de la base de datos, sus componentes, discriminados en dos grupos:

    1.1 Estadísticas del Dataset

    Muestra la descripción general del dataset, así:
    • Number of variables: cantidad de variables del dataset, para el caso del ejercicio son 9
    • Number of observations: Cantidad de registros, la base del ejercicio tiene 100.000
    • Missing cells: Cantidad de celdas faltantes, para el ejercicio no hay
    • Missing cells (%): Porcentaje de celdas faltantes
    • Duplicate rows: cantidad filas o registros duplicados, en la base del ejercicio hay 3.085 registros repetidos
    • Duplicate rows (%): porcentaje de filas o registros duplicados, en la base del ejercicio, es el 3.1%, es decir 3.085/100.000
    • Total size in memory: total de tamaño de memoria ocupada, para el ejercicio corresponde a 6.9 MiB
    • Average record size in memory: tamaño promedio en memoria de cada registro, para el ejercicio corresponde a 72.0 B
    1.2 Alertas

    Muestra las alertas o indicaciones que se deben tener en cuenta en el dataset:

    Registros duplicados, es decir filas que se repiten una o más veces en el dataset
    • Dataset has 3085 (3.1%) duplicate rows, para el ejercicio hay 3.085 registros duplicados que corresponden al 3.1% del total de la base
    Variables con alta correlación, es decir variables que tienen una relación alta entre ellas: 
    • HbA1c_level is highly overall correlated with diabetes, para nuestro caso, tenemos que, a mayor cantidad de azúcar en la sangre, mayor probabilidad de sufrir de diabetes
    • blood_glucose_level is highly overall correlated with diabetes, para nuestro caso, tenemos que, a mayor cantidad de nivel de glucosa en la sangre, mayor probabilidad de sufrir de diabetes
    Variables desbalanceadas, es decir, la diferencia entre sus valores está muy distanciada:
    • hypertension is highly imbalanced (61.6%), para nuestro caso, hay 92.515 personas no hipertensas para un 61.6% y un total de 7.485 de personas que si lo son, con una diferencia muy amplia entre ellas
    • heart_disease is highly imbalanced (76.0%), para nuestro caso, hay 96.058 personas que no presentan enfermedad cardíaca correspondiente al 76% frente a tan solo 3.942 que padecen esta enfermedad 
    • diabetes is highly imbalanced (58.0%), para nuestro caso, tenemos 91.500 personas que no son diabéticas, correspondiente al 58%, frente a 8.500 personas que si lo son
    1.3 Datos de ejecución del Dataset

    Muestra la información básica del momento en el que se ejecutó o reprodujo el análisis del dataset:

    • Analysis started, fecna y hora en que se inició la reproducción del dataset, en nuestro caso fue: 2024-02-24 12:51:45.216185
    • Analysis finished, fecna y hora en que finalizó la reproducción del dataset, en nuestro caso fue: 2024-02-24 12:51:54.657123
    • Duration, duración de la reproducción del dataset, varía dependiendo del tamaño de la base, en nuestro caso, la base cuenta con 100.000 registros y 9 variables y su duración fue de 9.44 segundos
    • Software version, la versión del software utilizado fue para este caso: ydata-profiling vv4.6.4
    • Download configuration, la configuración descargada para este caso fue: config.json

    2. Variables

    Corresponde a las variables utilizadas en el análisis, para nuestro ejercicio contamos con nueve variables:
    • gender: Género    
    • age: Edad    
    • hypertension: Hipertensión
    • heart_disease: Enfermedad cardiaca
    • smoking_history: Historial de fumador
    • bmi: Indice de masa corporal
    • HbA1c_level: Nivel de azúcar en la sangre
    • blood_glucose_level: Nivel de glucosa en la sangre      
    • diabetes: Diabetes
    Para cada variable se pueden determinar una variedad de valores o características, los cuales son:
    • Tipo de variable: para nuestro caso se tiene variables categóricas y numéricas
    • Distinct: cantidad de posibilidades en cada variable
    • Missing: Cantidad de datos faltantes en la variable
    • Memory size: Tamaño ocupado en la memoria por la información de la variable 
    Para nuestro ejemplo, tomamos la variable gender (género)


    Para el ejemplo, teniendo en cuenta la variable gender (género), se determinó que es de tipo categórica y tiene tres posibilidades:
    • Female: Femenino
    • Male: Masculino
    • Other: Otro
    El ProfileReport permite ver un análisis más profundo de cada variable para ello se da clic en el botón "More details" ubicado en la parte inferior derecha de cada una de ellas.


    2.1 Overview (Descripción general de la variable)
     

    En la descripción de la variable se tienen algunos datos como:

    Length: Mide datos de la longitud de las opciones de la variable
    • Max length: Longitud máxima, cantidad máxima de caracteres, para nuestro caso es 6 (female)
    • Median length: Media, cantidad media de caracteres, para nuestro caso es 6 
    • Mean length: Promedio, cantidad promedio de caracteres, para nuestro caso es 5.17122
    • Min length: Longitud mínima, cantidad mínima de caracteres, para nuestro caso es 4 (male) 
    Characters and Unicode: Muestra los diferentes caracteres utilizados y su clasificación, por ejemplo, en este caso se utilizaron en total 517.122 caracteres, los caracteres utilizados son F, e, M, m, a, l, O, t, h, r;  diez en total que forman las palabras Male, Female y Other. Se debe tener en cuenta que distingue entre mayúsculas y minúsculas

    El estándar Unicode asigna propiedades de carácter a cada punto de código, que se pueden utilizar para analizar variables textuales.


    2.2 Categories


    En las categorías se muestra en forma de tabla y gráfica la distribución de los valores de la variable, por ejemplo, en el caso del ejercicio, la varioable gender (género) tiene tres posibles valores con la siguiente cantidad en la base de datos:

    Valor           Cantidad        Porcentaje
    Female     58552             58.6%
    Male     41430             41.4%
    Other     18             < 0.1%



    2.3 Words


    De la misma forma del item anterior, aquí se muestra la cantidad de veces que aparecen las palabras female, male y other en la base de datos, sumando un total de 100.000


    2.4 Characters


    En el apartado Characters (Caracteres), se realiza un conteo de cada carácter en la base de datos, tanto en cantidad como en frecuencia o porcentaje, para el caso de ejemplo, los valores son:

    Value Count     Frequency (%)
    e         158552         30.7%
    a         99982         19.3%
    l         99982         19.3%
    F         58552         11.3%
    m         58552         11.3%
    M         41430         8.0%
    O         18                 < 0.1%
    t         18                 < 0.1%
    h         18                 < 0.1%
    r         18                 < 0.1%

    Esta información la muestra en cuatro subcategorías Characters, Categories, Scripts y Blocks, en las que muestra información relacionada con los caracteres, que en nuestro caso no aportan a los resultados.


    Para las otras variables muestra la información relevante de acuerdo a su contenido.

    La visualización de las ocho variables restantes es la siguiente:

    Edad

    Hipertensión


    Enfermedades cardiacas

    Historial de tabaquismo

    Índice de masa corporal

    Cantidad de azúcar en la sangre

    Cantidad de glucosa en la sangre

    Diabetes


    3. Interacciones

    La herramienta ofrece un apartado en el que se puede interactuar con las variables numéricas y analizar los datos basados en las correlaciones existentes entre ellas

    Para el ejercicio, las variables numéricas son las siguientes:
    • age: Edad    
    • bmi: Indice de masa corporal
    • HbA1c_level: Nivel de azúcar en la sangre
    • blood_glucose_level: Nivel de glucosa en la sangre      
    En la gráfica se muestra la correlación entre la edad y el nivel de glucosa en la sangre, mostrando en una gama de azules donde entre más oscuro sea el color, más relación hay y entre más claro, disminuye esta relación.

    Por ejemplo, podemos observar que las personas de 40 años tienen un alto porcentaje de tener cerca de 170 en el nivel de glucosa en la sangre lo cual es muy alto. 

    Así mismo, se pueden intercambiar las variables del eje X y Y, para analizar dichas correlaciones.

    4. Correlaciones

    Una forma más efectiva de ver las correlaciones entre la totalidad de las variables es en este apartado, al igual que en el anterior, se muestra en una gama de azules donde entre más oscuro sea el color, más relación hay y entre más claro, disminuye esta relación, adicional existe la gama de los rojos mostrando correlaciones negativas.

    Para el ejercicio, tenemos varias correlaciones importantes, la diagonal en azul oscuro muestra una correlación total debido a que es el cruce de una variable con sigo misma.

    Así como se muestra el gráfico de correlación, también se encuentra como tabla de valores lo que ayuda a determinar el valor exacto


    5. Valores faltantes

    En este apartado se muestra por variable la cantidad porcentual de datos faltantes en una escala de 0 a 1, mediante barras que representan el porcentaje de existencia de datos por variable.

    Para el caso del ejercicio, todas las variables tienen un valor de 1, lo que quiere decir que no existen datos faltantes.

    También se muestra el resultado en un gráfico en forma de matriz


    6. Ejemplo

    En este apartado se listan los registros mostrando ya sean los diez primeros o los diez últimos


    7. Filas repetidas

    En este apartado se listan los registros que se repiten en mayor cantidad




    Conclusiones de ProfileReport

    La información proporcionada por ProfileReport es de gran ayuda para el diagnóstico y análisis de los Dataset, para el ejercicio trabajado podemos concluir que:
    • El dataset tiene 100.000 registros, cuenta con 9 variables de las cuales la función detecta 5 variables categóricas y 4 numéricas.
    • El dataset no tiene datos faltantes, sin embargo, presenta 3085 registros duplicados que corresponden al 3,1% de los datos.
    • Para el ejercicio las variables HbA1c_level y blood_glucose_level estan altamente correlacionadas con diabetes y su vez la diabetes presenta una alta correlación con la variable blood_glucose_level.
    • Existen 3 variables que presentan desbalanceo hypertension (61,6%), heart_disease (76%), diabetes (58%).
    • Las variables consigo mismas presentan una perfecta correlación.
    • A través del mapa de calor se corrobora la alta correlación de HbA1c_level y blood_glucose_level  con diabetes y  de la diabetes con la variable blood_glucose_level.

    Entradas más populares de este blog

    4. Resultados mediante PyGWalker