Vista previa del material en texto
Universidad Nacional Autónoma de México Facultad de Ingeniería Minería de Datos Grupo: 03 - Semestre: 2023-2 Práctica 6: Análisis de componentes principales (PCA) -Datos obtenidos por el estudiante- Fecha de entrega: 30/03/2023 Profesor: Dr. Guillermo Gilberto Molero Castillo Alumnos: Cruz Rangel Leonardo Said Téllez González Jorge Luis Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Introducción El Análisis Exploratorio de Datos (EDA, Exploratory Data Analysis) tiene como objetivo principal comprender y analizar los datos para descubrir tendencias y posibles anomalías. Además, se veri�ca la calidad de los datos, se detectan valores atípicos y datos faltantes, y se seleccionan las variables relevantes para el modelo de minería de datos. Todo esto para identi�car las técnicas de minería de datos más apropiadas para aplicar en el conjunto de datos. Figura 1. Proceso básico del EDA. Durante la fase de EDA, es común descubrir relaciones y patrones entre las variables en el conjunto de datos. Esta evidencia podría indicar que algunas variables son redundantes, por lo que es posible eliminarlas para simpli�car el conjunto de datos y evitar información innecesaria. Lo anterior, es el objetivo principal del análisis de componentes principales (PCA, Principal Component Analysis), este algoritmo se utiliza para reducir la cantidad de variables de un conjunto de datos, mientras se conserva la mayor cantidad de información posible al identi�car las variables más importantes que explican la mayor cantidad de variación en los datos. Figura 2. Proceso general del PCA. 2 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ En esta práctica, se utilizarán el Análisis Exploratorio de Datos y el Análisis de Componentes Principales para analizar un conjunto de datos que contiene variables relacionadas con enfermedades del corazón. El objetivo es predecir qué pacientes son más propensos a sufrir una enfermedad cardíaca en un futuro cercano. Esta tarea es especialmente importante, dado que las enfermedades del corazón son la principal causa de muerte en el mundo desarrollado. Por lo tanto, es crucial llevar a cabo iniciativas para prevenir los riesgos de padecer un ataque cardíaco u otras enfermedades similares. Para realizar la actividad anterior, se recuperó un conjunto de datos proveniente del sitio web Kaggle en formato csv el cual será leído empleando Python y la biblioteca pandas para realizar manipulaciones en el mismo, entre otras bibliotecas de visualización. Figura 2. Fuente de los datos: https://www.kaggle.com/datasets/mirzahasnine/heart-disease-dataset Desarrollo A partir de la información encontrada se puede de�nir el siguiente diccionario de datos, el cual describe y de�ne los datos que se utilizarán para el EDA. Item Column name De�nition 1 2 3 4 5 6 7 8 9 10 11 gender age education currentSmoker cigsPerDay cBPMeds prevalentStroke prevalentHyp diabetes totChol sysBP género edad nivel de educación valor binario que indica si una persona fuma o no cigarrillos por día que fuma una persona valor binario que indica si una persona está tomando medicamentos para la presión arterial. valor binario que indica si una persona ha tenido un accidente cardiovascular previo. valor binario que indica si una persona tiene hipertensión arterial. valor binario que indica si una persona tiene diabetes. nivel total de colesterol en la sangre presión arterial sistólica 3 https://www.kaggle.com/datasets/mirzahasnine/heart-disease-dataset Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ 12 13 14 15 16 diaBP BMI heartRate glucose Heart_stroke presión arterial diastólica índice de masa corporal frecuencia cardíaca de una persona en reposo nivel de glucosa en sangre de una persona un valor binario que indica si una persona ha sufrido una enfermedad cardíaca. Figura 3. Diccionario de datos. A continuación, se de�nen los pasos que se siguieron para llevar a cabo el Análisis Exploratorio de Datos y el Análisis de Componentes Principales: I. Análisis Exploratorio de Datos Paso 0: Importación de bibliotecas y datos. En este paso se revisó la descripción y signi�cado de cada columna de la tabla. Paso 1: Descripción de la estructura de los datos. a. Forma (dimensiones) del DataFrame El atributo ‘shape’ de pandas se utiliza para obtener las dimensiones de un DataFrame, devuelve una tupla de dos elementos que representan el número de �las 4 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ y columnas del objeto de datos. Esto es útil para entender la estructura de un DataFrame y puede ser utilizado para realizar operaciones que requieren conocimiento sobre el número de �las o columnas. b. Tipos de datos: En Pandas, ‘dtypes’ se utiliza para obtener los tipos de datos de cada columna de un DataFrame, devuelve un objeto ‘Series’ con el nombre de cada columna como índice y el tipo de datos de esa columna como valor. Es importante destacar que el conjunto de datos contiene tanto variables numéricas (�oat64) como categóricas (object), lo que implica la necesidad de aplicar distintas técnicas de visualización de datos. En particular, las variables categóricas se suelen representar mediante grá�cos de barras o diagramas de sectores, mientras que las variables numéricas se representan a través de histogramas o grá�cos de dispersión. Paso 2: Identi�cación de datos faltantes. Detectar datos faltantes en un dataset es esencial, ya que la ausencia de información puede tener un impacto signi�cativo en los resultados del análisis. Si los datos faltantes no se detectan, los análisis pueden producir resultados incorrectos o engañosos, lo que puede sesgar los resultados de manera negativa. Por lo tanto, es crucial detectar los datos faltantes para reducir cualquier sesgo en los resultados obtenidos. 5 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ En Pandas se puede usar la función ‘isnull.sum( )’ para detectar la suma de todos los valores nulos en cada variable. También se puede usar ‘info( )’ para obtener el tipo de dato de cada columna, la cantidad de valores no nulos y la cantidad de memoria utilizada por el DataFrame. Después de identi�car la cantidad de valores nulos en un DataFrame, es importante tomar medidas para manejarlos de manera efectiva. Las decisiones que se tomen dependerán del tipo de datos y del análisis que se vaya a realizar. 6 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Una de las opciones para manejar los valores nulos es la eliminación directa de las �las o columnas que contienen datos faltantes, pero esto puede generar una reducción signi�cativa en el tamaño del DataFrame y, por lo tanto, en la cantidad de información disponible para el análisis. Es importante evaluar cuidadosamente el impacto de esta opción antes de tomar una decisión. Para el caso de este conjunto de datos se identi�can datos faltantes en las variables education, cigsPerDay, BPMeds, totChol, BMI, heartRate y glucose, dado que no representan una gran cantidad de datos en comparación con el total de los mismos, se escoge eliminarlos. Paso 3: Detección de valores atípicos. Una forma de detectar valores atípicos es a través de la visualización de los datos y el análisis estadístico, esto nos permite resumir los datos y tener una idea general de su distribución, con distribución se hace referencia a cómo se comportan los valores en una variable o con qué frecuencia ocurren. En el caso de las variablesnuméricas, la distribución se puede observar mediante histogramas o grá�cos de densidad, los cuales permiten ver cuántas veces aparecen grupos de números en una columna. Por otro lado, para las variables categóricas, la distribución se puede observar a través de grá�cos de barras o diagramas de sectores, los cuales muestran las clases de cada columna y su frecuencia. a. Variables numéricas Existen 3 formas en las que se pueden identi�car datos atípicos en variables numéricas, a continuación se muestran cada una de ellas. i. Distribución de variables numéricas Se utilizarán histogramas para agrupar los números en rangos, en donde la altura representa cuántos números caen en ese rango. En Pandas se emplea ‘hist( )’ con los parámetros �gsize y xrot para trazar el histograma, aumentar el tamaño de la cuadrícula y rotar el eje x 45 grados respectivamente. 7 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Output: Al observar las grá�cas podemos identi�car posibles valores atípicos y límites que no tienen sentido. Por ejemplo, en totChol, sysBP, diaBP, BMI, heartRate y glucose existen valores sesgados a la izquierda, y en general hay valores extremadamente altos que sugieren condiciones de salud preocupantes por lo que es necesario consultar con profesionales de la salud para manejarlos de forma adecuada. ii. Resumen estadístico Para obtener un resumen estadístico de las variables numéricas se usa la función ‘describe( )’ de Pandas. 8 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Output: Este resumen incluye un recuento de la media, desviación, valor mínimo, valor máximo y percentiles de 25%, 50% y 75%. Estos datos son útiles para con�rmar lo visualizado en los histogramas, como que hay valores muy extremos en las variables antes mencionadas. iii. Diagramas de caja Para este tipo de grá�cas se utiliza la biblioteca ‘Seaborn’. Output: 9 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ De los diagramas de caja se puede veri�car que existen medidas en las variables totChol, sysBP, diaBP, BMI, heartRate y glucose que parecen ser demasiado altas y se salen mucho de un rango normal. Por ejemplo, el rango de los niveles de colesterol total en la sangre para adultos sanos está entre 125 y 200 mg/dL. Los niveles por encima de 240 mg/dL ya se consideran altos y la medida máxima en totChol es de 696 por lo que muy probablemente sea un valor atípico. En sysBP, el valor normal en adultos es menor a 120 mmHg, una presión sistólica de más de 130 se considera alta (hipertensión). Un valor de 295 podría indicar una hipertensión severa y potencialmente peligrosa para la salud. En diaBP el valor normal de la presión diastólica es menor a 80 mmHg, una presión diastólica de más de 90 se considera alta. Un valor de 142.5 podría indicar una hipertensión severa. En BMI (Índice de masa corporal) el rango en personas con obesidad va de 30 a 39.9, por lo que un valor de 56.8 pudiera ser erróneo o un valor atípico muy alto. En heartRate el rango normal en reposo generalmente está entre 60 y 100 latidos, un valor de 143 es inusualmente alto. En glucose, el rango normal de glucemia en ayunas es generalmente de 70 a 100 mg/dL, un valor por encima de 200 mg/dL sugiere diabetes. Todos estos valores inusualmente altos no necesariamente deberían ser eliminados de la base de datos, pues pudieran ser indicativos de una condición médica o situación particular, se tendría que consultar con un profesional de la salud para que determine si son correctos o no. Para efectos de este trabajo, solo se van a eliminar aquellos que no tengan mucho sentido y que se separan mucho del rango promedio, los demás se considerarán como únicos. 10 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ b. Variables categóricas Para las variables categóricas, utilizaremos grá�cos de barras para visualizar la frecuencia de cada categoría y obtener una idea general de su distribución. Posteriormente, complementaremos esta información con un análisis estadístico adecuado para comprender mejor la relación entre las variables y poder extraer conclusiones más precisas. En esta tabla se muestra el recuento de los valores de cada variable, el número de clases únicas, la clase más frecuente y con qué frecuencia ocurre esa clase en el DataFrame. Una de las ventajas de este dataset es que las variables categóricas son binarias, es decir, que solo tienen dos valores únicos, como prevalentStroke en donde solo hay dos opciones: si o no. Para hacer las grá�cas de barras se utiliza ‘Seaborn’, donde cada barra representa una clase. Se crea un For para el conteo y distribución de las clases, con la sentencia select_dtypes(include = ‘object’) se selecciona las columnas categóricas con sus valores y las muestra, además se incluye un if para elegir solo las columnas con 10 o menos clases usando nunique( ) < 10. 11 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Output: De estas grá�cas podemos concluir que la mayoría de los datos provienen de mujeres y de personas sin un grado escolar, además de que parecieran ser personas con buena salud debido a los valores de ‘prevalentStroke’ y ‘HeartStroke’. Dado el análisis anterior, no se identi�caron variables categóricas atípicas. Paso 4: Identi�cación de relaciones entre pares de variables. Una matriz de correlaciones es útil para analizar la relación o qué tan dependientes son unas variables numéricas de otras. Para hacer esto se emplea la función ‘corr( )’. 12 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Sin embargo, esta tabla es muy poco intuitiva y didáctica al momento de analizarla, por lo que es mejor hacer un mapa de calor mediante la biblioteca ‘Seaborn’. De esta forma es más fácil identi�car la correlación entre pares de variables. Una correlación es un valor entre -1 y 1 que equivale a qué tan cerca se mueven simultáneamente los valores de dos variables. ● Una correlación positiva signi�ca que a medida que una característica aumenta, la otra también aumenta. ● Una correlación negativa signi�ca que a medida que una característica disminuye, la otra también disminuye. ● Las correlaciones cercanas a 0 indican una relación débil, mientras que las más cercanas a -1 o 1 signi�can una relación fuerte. Paso 5: Preparación de los datos. Una vez identi�cados aquellos registros con valores atípicos e inconsistencias, a continuación se realiza un proceso de limpieza de los datos, en donde se eliminarán por completo aquellos registros que contengan valores nulos y, además, que contengan datos incongruentes y que, en consecuencia, puedan añadir un sesgo que altere la información obtenida a partir del análisis exploratorio. 13 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ A través de los pasos anteriores se identi�caron los siguientes registros con valores nulos en el dataset: Figura 4. Conteo total de registros con valores nulos. Adicionalmente, se presentaron 3 casos de inconsistencias en los datos de las columnas totChol, sysBP, diaBP, BMI, heartRate y glucose donde existen ciertos registros que sobrepasan por mucho los valores de otros. Con lo anterior en mente, se procede a iniciar la eliminación de los registros con valores nulos utilizando el método dropna y delimitando un subconjunto de forma que se eliminen aquellos registros que tengan un nulo en totChol, sysBP, diaBP, BMI,heartRate y glucose. Este procedimiento se realiza con el �n de quedarnos con registros lo más completos posibles en todas las columnas del dataset. La opción any indica que, si en cualquier registro se encuentra por lo menos un nulo en las columnas seleccionadas, se descarte por completo el registro. 14 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Figura 5. Eliminación de nulos en el dataset. Como se observa, de esta manera nuestro dataset queda depurado de aquellos registros con datos faltantes. Hecho esto, ahora se realiza la depuración de los valores atípicos en totChol, sysBP, diaBP, BMI, heartRate y glucose como se observa a continuación. Figura 6. Eliminación de elementos atípicos. Para lograr lo anterior se requiere el uso de condicionales que especi�quen qué valores se desean conservar en el dataset. En principio, se usa el método loc para seleccionar y mantener aquellos registros que se encuentren dentro de un rango. Realizar la selección de un rango aceptable sin la ayuda de un profesional de la salud fue un desafío, especialmente al momento de establecer un umbral máximo para todas las medidas. Se buscó eliminar los valores extremos que se alejan signi�cativamente del rango típico, especí�camente los que in�an los resultados para la media de los datos. Además, se trató de conservar los valores que fueran representativos. Sin embargo, la falta de información sobre si los datos provienen de pacientes con diabetes u otra información que fuera de utilidad di�culta la toma de decisiones para considerar o descartar ciertos datos. En de�nitiva, se seleccionaron las medidas con cuidado, aunque sin la certeza absoluta de su relevancia médica. 15 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Figura 7. Diagramas de caja con los registros anómalos eliminados. Para los propósitos de la práctica, se considera que la depuración es adecuada, sin embargo, en un caso de uso real resultaría necesario consultar con profesionales de la salud si aquellos registros con valores extremos corresponden a la realidad y se ajustan a las necesidades del proyecto realizado y es necesario conservarlos para evitar un posible sesgo en los resultados. II. Análisis de Componentes Principales Paso 1: Evidencia de posibles variables correlacionadas. En el proceso de EDA, se identi�caron 5 variables fuertemente correlacionadas: cigsPerDay y currentSmoker, prevalentHyp y diaBP, prevalentHyp y sysBP, y sysBP y diaBP, tal y como se muestra en el siguiente mapa de calor de correlaciones. Figura 8. Heatmap de correlaciones. 16 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Del HeatMap se pueden identi�car 5 correlaciones fuertes entre pares de variables: ● currentSmoker y cigsPerDay (0.77): tiene sentido porque los fumadores tienden a consumir más cigarrillos. ● prevalentHyp con diaBP (0.62) y con sysBP(0.7): esto es esperable porque la hipertensión es una de las causas de aumento de la hipertensión arterial. ● sysBP con diaBP (0.78): la presión arterial sistólica y diastólica son medidas relacionadas con la presión arterial, por lo tanto es normal que tengan un comportamiento similar. Comprobada la existencia de variables fuertemente correlacionadas, es posible realizar un análisis de componentes principales para eliminar las variables redundantes. Paso 2: Estandarización de los datos Para esta práctica se utilizó el escalado para hacer la estandarización de los datos, la razón por la que es fundamental realizar este paso, antes del PCA, es eliminar las diferencias que existan entre los rangos de las variables para evitar resultados sesgados. 17 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Paso 3 y 4: Se calcula la matriz de covarianzas o correlaciones, y se calculan los componentes y la varianza. El número de componentes es igual a l número de variables en el dataset. Paso 5: Se decide el número de componentes principales. Para elegir el número de componentes se hace una evaluación de las varianzas, en el que se establece un porcentaje de relevancia entre el 75 y 90% de varianza total. También se pueden identi�car por medio de una grá�ca de codo. 18 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Para el caso de este dataset, se escogieron 8 componentes principales, pues su combinación nos da como resultado un porcentaje de relevancia del 89%, es decir, no se pierde mucha información. Se fundamenta la elección mediante la siguiente grá�ca de codo: Paso 6: Se examina la proporción de relevancias (cargas) La importancia de cada variable se re�eja en la magnitud de los valores en los componentes (mayor magnitud es sinónimo de mayor importancia). Se revisan los valores absolutos de los componentes principales seleccionados. Cuanto mayor sea el valor absoluto, más importante es esa variable en el componente principal. 19 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Para hacer la elección de las variables de mayor importancia, primeramente se estableció un umbral del 50%, por lo que las variables que no lo sobrepasaron serían eliminadas. Sin embargo, al establecer este umbral arbitrario se eliminaban variables que son de importancia al momento de predecir enfermedades del corazón, tales como: prevalentHyp, sysBP y diaBP, todas con correlaciones fuertes entre sí debido a su relación con la hipertensión arterial. Por lo tanto, para evitar eliminar todas estas variables, se optó por mantener la variable más representativa de las tres (sysBP), de esta forma se garantiza que la información redundante que proporcionaban las otras variables quedara fuera del modelo y se mantuviera una variable que pudiera indicar problemas del corazón, como lo es la presión sistólica. Otra de las consecuencias de incluir la variable sysBP es que el umbral bajó del 50% al 49% por lo que hay que veri�car nuevamente las variables de mayor importancia. Además de lo anterior, se identi�caron dos variables fuertemente correlacionadas ('currentSmoker' y 'cigsPerDay') que superan el umbral del 49%. Aunque ambas pueden ser importantes para el modelo, es probable que proporcionen información redundante. Por lo tanto, se decidió conservar sólo la variable de mayor importancia ('cigsPerDay') y eliminar 'currentSmoker'. De tal forma que el heatmap de correlaciones queda como se presenta a continuación: Vemos que del total de 16 variables, hemos reducido el conjunto a 9 variables numéricas y 4 categóricas. 20 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ Conclusiones Por medio del análisis exploratorio de datos y análisis de componentes principales realizado es posible llegar a las siguientes conclusiones con respecto a la predicción sobre qué pacientes son más propensos a sufrir una enfermedad cardíaca en un futuro cercano, empleando los datos depurados previamente: ● Del conjunto de datos, la mayoría de las personas consumía en promedio 9 cigarrillos al día. Es importante tener en cuenta que el consumo de cigarrillos es uno de los principales factores de riesgo para enfermedades del corazón. Por lo tanto, si la persona presenta sobrepeso, diabetes o presión arterial alta, es fundamental tomar medidas preventivas y disminuir el consumo de cigarrillos diarios. Figura 9. Descripción estadística de los datos depurados. ● La mayoría de los datos provienen de mujeres y de personas sin un grado escolar,además de que parecieran ser personas con buena salud debido a los valores de las columnas ‘prevalentStroke’ y ‘HeartStroke’. Figura 12. Distribución de propiedades con base en su tipo, 21 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ ● El análisis de correlaciones empleando un heatmap arroja una alta correlación entre: ○ currentSmoker y cigsPerDay (0.77): tiene sentido porque los fumadores tienden a consumir más cigarrillos. ○ prevalentHyp con diaBP (0.62) y con sysBP(0.7): esto es esperable porque la hipertensión es una de las causas de aumento de la hipertensión arterial. ○ sysBP con diaBP (0.78): la presión arterial sistólica y diastólica son medidas relacionadas con la presión arterial, por lo tanto es normal que tengan un comportamiento similar. Figura 13. Distribución de propiedades con base en su tipo, Cruz Rangel Leonardo Said: A pesar de que el conjunto de datos analizado en esta práctica no contenía muchas variables, fue posible realizar con éxito un análisis de componentes principales, por lo que queda en evidencia la utilidad que tiene ésta técnica para disminuir la dimensionalidad de los datos de forma efectiva y de manera que no se pierda mucha información en el proceso. Aunque, el verdadero potencial del algoritmo PCA me imagino que se explota de mejor manera en aquellos conjuntos de datos en donde se tengan muchísimas variables y exista una necesidad latente de reducirlos. De los datos que se analizaron en la práctica aprendí mucho sobre las enfermedades del corazón, y de las variables que pudieran estar involucradas y fueran relevantes para predecir si un paciente es propenso a presentar un ataque al corazón, por ejemplo. Sobre todo, me impresionó que el consumo de cigarrillos por día estuviera fuertemente relacionado con las enfermedades cardiovasculares, esto porque daña las paredes de las arterias y aumenta el riesgo de coágulos sanguíneos. 22 Facultad de Ingeniería Minería de Datos_____________________________________________________________________________________________________________ En cuanto al objetivo de la práctica, creo que se logró identi�car información de interés que pudiera ser de ayuda para predecir enfermedades del corazón, además de que se comprendió el funcionamiento del algoritmo PCA, por lo que considero que se realizó con éxito. Téllez González Jorge Luis: Por medio del trabajo realizado logramos comprender de mejor manera todo el proceso que involucra tanto la recopilación, la exploración inicial de datos y el mecanismo necesario para realizar la reducción de componentes dentro de un conjunto de datos. Resulta interesante analizar la información que nos dan los datos con respecto a las condiciones médicas relacionadas con las enfermedades del corazón, y aunque estos datos en un escenario real necesitarían ser validados por un especialista para veri�car su congruencia, nos permiten darnos cuenta del gran poder que tienen los datos para brindarnos insights importantes que, en determinados casos, incluso podrían resultar en vidas humanas salvadas gracias al poder de los datos para generar resultados predictivos, e incluso prescriptivos, que alienten o alerten a las personas de condiciones médicas graves producto de estilos de vida de�cientes. Cabe señalar que, paralelamente al trabajo presentado, se realizó un segundo análisis con PCA relacionado con el sector de créditos bancarios, en donde, a diferencia de este caso donde las altas correlaciones favorecieron la aplicación de PCA, en ese caso particular PCA no resultó signi�cativo por la falta de correlaciones fuertes; lo que nos dio una lección importante de en qué casos resulta adecuado o no realizar este procedimiento. Referencias Hashine, M. (2023). Heart Disease Dataset. Kaggle. Recuperado el 23 de marzo de 2023 desde: https://www.kaggle.com/datasets/mirzahasnine/heart-disease-dataset w3resource. (2022). Pandas DataFrame: dropna() function. Recuperado el 23 de marzo de 2023 desde: https://www.w3resource.com/pandas/dataframe/dataframe-dropna.php NNK. (2022). Pandas loc[] Multiple Conditions. Recuperado el 23 de marzo de 2023 desde: https://sparkbyexamples.com/pandas/pandas-loc-multiple-conditions/ 23 https://www.kaggle.com/datasets/mirzahasnine/heart-disease-dataset https://www.w3resource.com/pandas/dataframe/dataframe-dropna.php https://sparkbyexamples.com/pandas/pandas-loc-multiple-conditions/