2022/07/26

S3 Práctica: Histogramas

PRÁCTICA: HISTOGRAMAS

va a trabajar con un conjunto de datos de enfermedades del corazón generada por la 'UCI de Cleveland' 
Nuestra página que está aquí es un compendio de esa información en la plataforma Kaggle.
va a entrar y ver.
¿Qué es este Data Set?
Entonces tiene aquí en nuestro Data Set y contiene 76 atributos pero, en particular está sesgado a 14 de ellos.
Los 14 atributos que cada uno de los pacientes dentro de este Data Set han registrado son: La Edad, El Sexo, El Tipo de Dolor en la Caja Toráxica, La Resistencia en la Sangre, El Colesterol, Los Ácidos Grasos y Entre Otros datos en particular.
Aquí tienen toda la información, la pueden leer, pueden checarla pero, en particular
¿Qué va a hacer con esta página?
Descargarla, igual que en ejercicios anteriores.
Si ya tienen una cuenta de Kaggle accedan a ella y bajenlo si no tienen, por favor creen una y descarguenlo.
Lo que descarguemos, que es el archivo csv por favor ponganlo en la carpeta de Data en la misma raíz donde tengan todos sus cuadernos o en caso contrario memoricen la ruta porque la va a ocupar escrita en nuestra libreta.
Bueno, regresamos a la libreta, nuestra libreta cómo va a ocupar Data Sets y Data Frames va a ocupar pandas Entonces va a empezar utilizando nuestra instrucción 'import...
'import pandas as pd', damos run y ya nuestra libreta de Python tiene pandas.
va a empezar con la misma instrucción que las veces pasadas pero modificando lo que ahora sea el conjunto 'heart' -corazón- csv Le damos play y para saber que lo leímos bien el 'df.head'.
Con '.head' yo puedo saber los 5 primeros valores, puedo modificar eso aquí ponerle por ejemplo, 10.
Y me va a salir los 10 primeros pero bueno, con 5 es suficiente para hacernos de una idea general.
En esta Data Set tengo: 'El paciente 0' conozco, Su Edad, Su Sexo y sus diferentes datos.
va a ver
¿Qué se podra hacer con esto?
Entonces esta gráfica, a mí me interesa hacer un histograma, me interesa graficarlo.
Para eso voy a ocupar 'matplotlib.pyplot' y lo voy a importar as 'plt' y con la instrucción de % matplotlib inline para que se vea en esta libreta.
Entonces le doy run y ya puedo en esta libreta trabajar con matplotlib y empezar a hacer mis gráficas y le voy a decir haz una gráfica, es decir un plot, del tipo histograma 'plt.hist' con la columna Data Frame del puro colesterol.
Entonces no va a ser un histograma de todo el colesterol de nuestra tabla.
Aquí está se ve más o menos cuántas personas tienen un colesterol alto, cuántas personas tienen colesterol bajo, entre otros, entre otros muchos datos.
Pero bueno, va a ver ahora un primer parámetro entre esta celda y esta celda de acá arriba existe este primer parámetro 'bins' y le puse 20.
va a ver
¿Qué pasa al reproducir esta celda?
Nos da un histograma muy parecido pero el intervalo del eje horizontal está repartido en 20 intervalos diferentes, yo le dije exactamente en cuántos valores distintos iba a repartir el máximo de estos valores.
va a probar ahora con un bins de 5 Si se dan cuenta sólo hay cinco valores, el primer valor que va desde poquito más de 0 hasta poquito más de 200, de 200 a 300 y así sucesivamente sólo hay 5 secciones y este de aquí tiene 20 secciones.
Entonces es un poquito más delimitada la gráfica de arriba, que la gráfica abajo.
Cuando necesitas un estudio un poco más formal te recomiendo que uses más divisiones para que puedas delimitar mejor tu información si es un estudio muy rápido o algo sencillo pues con poquitas divisiones del eje horizontal te puedes dar una idea general.
Entonces esto va a depender realmente de la aplicación que tú le quieras dar.
va a continuar con la libreta, ahora va a ocupar del Data Frame igual, el colesterol con un bins de 20 pero va a ponerle, que el tipo de histograma sea de 'step' o de 'paso' Le doy run y ahora en lugar de que esté coloreada nuestra gráfica sale simplemente la línea, el escalón o el paso que se podría traducir.
Entonces esta gráfica de aquí representa la misma formación que esta de acá pero, en lugar de hacer una figura sólida y rellena, es una figura que solamente tiene su contorno y que está vacía por dentro.
A lo mejor eso hace más fácil su lectura o su comparación con diferentes líneas.
Otro de los parámetros que se podra controlar es, si queremos que nuestro histograma sea vertical o sea horizontal.
Los histogramas que hemos hecho hasta ahorita, todos han sido verticales.
Bueno, va a agregar el parámetro orientation en este caso le va a especificar 'orientation = horizontal' va a ver qué pasa.
El resto de la gráfica, es la gráfica que ya habíamos hecho acá arriba, este histograma.
Entonces ahora va a ver cómo lo presenta Python.
Sí, yo le doy ejecutar, ahora mi histograma está horizontal.
Eso me puede servir a veces para visualizar más fácil algunos datos.
¿Qué más va a hacer con esto?
Les voy a recordar que todas las gráficas que hagamos en una misma celda, como sería el caso de graficar el colesterol y de graficar la presión sanguínea, si lo hago en una misma celda, se va a ver reflejado dentro de la misma gráfica.
Van a salir sobrepuestas una imagen con la otra.
Para facilitar nuestra lectura les voy a poner un alfa de 0.5 para que se vean un poco tenue si se distingan quizás con un poco más de facilidad .Bueno, le doy run y me sale esta gráfica.
El único problema con esta gráfica es que sin conocer el conjunto de datos yo no puedo saber si el naranja corresponde al colesterol o corresponde a la presión sanguínea.
O si el azul corresponde al colesterol o a la presión sanguínea.
Entonces por eso es muy importante que le agreguemos las leyendas, recordaran de los ejercicios de visualización pasada que la leyenda era un cuadro en el que especificaba cual variable era de cada color.
Bueno, para eso yo le necesito decir a mi histograma que estoy poniendo
¿Qué etiqueta va a tener?
En este caso el histograma que vino del Data Frame, de la columna de colesterol le voy a poner la etiqueta 'chol' y al que vino de 'trestbps' le voy a poner el mismo nombre.
En ese caso si yo le doy ahora run, ahora si me especifica que el azul es colesterol y el amarillo/naranja es la presión sanguínea.
Bueno, otra librería o paquetería que me permite visualizar este tipo de histogramas es está: 'seaborn' y por convención la va a nombrar 'sns'.
Voy a graficar con 'sns.
'sns.gráfica de distribución' y aquí el nombre nos dice que es un poco diferente al histograma, porque esta paquetería además de hacer las barras del histograma también nos da la función de distribución que más se asemeja a nuestros datos.
Recordarán por ejemplo, en nuestra parte teórica, donde nosotros veíamos este histograma y decíamos que era muy parecida a la forma de esta distribución.
Bueno 'seaborn' nos da esa opción.
En particular para que sea nuestro primer ejemplo voy a poner el parámetro 'kde = false'
¿Qué hace eso?
Nos quita la distribución, solamente nos deja ver el histograma.
De default nuestra paquetería maneja esto como verdadero.Entonces verdadero cuando queremos ver la distribución, falso cuando no queremos.
Ahorita por ser el primer ejemplo va a darle un falso, va a ver.
Le decimos haz una gráfica de distribución con la columna de colesterol del Data Frame que tiene.
Le damos a ejecutar y hace nuestro histograma.
Y aquí lo se podra observar.
Ahora va a ver qué pasa cuando, si queremos eso, los mismos datos.
Ahora el 'kde' lo va a poner en verdaderos, en forma de default no hay que especificarla y va a agregar este segundo parámetro 'rug' va a ver
¿Qué pasa?
y nos da esta gráfica.
No sólo nos da el mismo histograma sino que, también nos da la gráfica de distribución y con el parámetro 'rug' se podra ver estas líneas de abajo que es como se concentra los datos en nuestro histograma.
Ahora si yo quiero juntar 2 variables en una sola visualización, hay alternativas.
No sólo existe la alternativa de poner 2 histogramas en el mismo espacio sino que 'sns' el 'seaborn' nos da esta opción 'jointplot' Le voy a decir en el eje x, por favor ponme el parámetro 'thalach', que nos dice según nuestro Data Frame el máximo ritmo cardíaco que tiene este paciente, y en el eje y le voy a poner el colesterol.
va a intentar deducir si existe una relación entre el máximo ritmo cardíaco y el colesterol.
Pero va a darle play, a ver cómo se ve esta celda.
Esta celda nos presenta en el eje 'Y' el colesterol y en el eje 'X' el máximo ritmo cardíaco.
Ok
¿Qué son estos puntos?
Estos puntos es donde más se relaciona una concentración entre ambas variables.
Esta sección de aquí ,si en estos extremos no hay muchos datos porque no hay muchos pacientes que tengan una máxima ritmo cardíaco de cercano entre 80 y 100 tampoco hay muchos pacientes que tengan un colesterol que rebase los 400.
Entonces esta sección de aquí no hay datos, más hacia abajo ya empiezan a relacionarse.
Estos cuadrantes que se generan aquí es una relación entre la variable del máximo ritmo cardíaco y la variable de colesterol y ya se podra saber para qué colesteroles hay un máximo ritmo cardíaco y se podra empezar a relacionar pero quizás ver los datos con puntos, es un poco difícil 'seaborn' nos da esta opción.
Agregarle el parámetro tipo, tipo hexágonos.
va a ver, va a sustituir los puntos por hexágonos y a ver como se ven.
Ahora ya se ve un poco más claro, por las regiones oscurecidas son las regiones donde más personas tienen esa configuración por decirlo de alguna manera.
Hay muchas personas que tienen un colesterol cercano a 220 y un ritmo cardíaco cercano a 150, esta región está muy cargada entonces muchas personas tienen esta misma coincidencia.
Pocas personas andan en los extremos claros, múltiples en los extremos oscuros.
va a correr nuestra última celda.
Simplemente agregamos esta opción 'sns.set' 'sns.set' va a ver
¿Cómo cambia?
siendo que lo demás es lo mismo, fíjense cómo se estiliza, seaborn tiene esta opción el '.set' en el que le da una temática un poco más visual y más elegante con el que es posible que se vea mejor su trabajo.
Entonces cuando ya uno lo quiere meter como un reporte, como un trabajo, como una investigación vale la pena que sepan este tipo de configuraciones.
seaborn tiene muchísimas configuraciones de colores que va a ver en más vídeos pero, por el momento es todo lo que va a revisar de histogramas espero que este y las siguientes lecciones les permitan seguir entendiendo Visualización de Datos.
 

No hay comentarios:

Publicar un comentario

S4 Cierre

Cierre Semana 4 Muchos de los problemas actuales a los que se enfrenta un científico de datos involucran el manejo de grandes cantidades de ...