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:
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
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%
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
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
- 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.
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
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
En este apartado se listan los registros mostrando ya sean los diez primeros o los diez últimos
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.