visualización de datos

Gráficas de distribución

Existen multitud de gráficos para visualizar la distribución de nuestros datos y poder ver patrones. Hoy le toca el turno a dos gráficos con los que podremos ver de mejor forma como se distribuye la frecuencia de aparición de una variable respecto de otra. Estamos hablando del histograma (histogram) y el kernel density estimate (KDE, no sé cómo traducirlo 🤷‍♀️) Histograma Un histograma no es una gráfica de barras, puede parecerlo pero tiene diferencias como que en este caso el valor por el que se distribuyen nuestra frecuencia no es un valor categórico, es continuo. ¿Esto que quiere decir? Con esto nos referimos a que el eje de las X no está separado por grupos de manera natural (como puede ser el estado de una tarea; pendiente, hecho, por hacer) en este caso es continuo y existen infinitos valores entre un punto y el siguiente. Es por esto que, en este tipo de gráficos tenemos que agrupar nuestros valores en clases (bins). Estas clases simplemente son un rango para poder hacer la agrupación por ejemplo, si tenemos valores desde 0 hasta 1 podríamos decidir agruparlos en clases de 1. Esta primera clase, va a tener una barra para los valores que se encuentran en este rango [0, 1), otra para [1, 2) y de esta forma todos los valores o nos puede interesar agrupar en rangos de dos. Esto dependerá del uso que le queramos dar y los valores que tengamos disponibles. A diferencia de los gráficos de barras, los histogramas no pueden ordenarse por frecuencia de aparición ya que pierden el sentido de continuidad y lo que representan. Con un histograma podemos ver como se distribuyen los datos. Kernel Density Estimate (KDE) Este tipo de gráficos funciona de forma similar que el histograma que hemos visto anteriormente con la diferencia de que en este caso muestra de manera continua la evolución de los valores en lugar de separarlos por rangos. De igual forma podemos ver la evolución de una variable respecto de otra. Con este tipo de gráficas, como su propio nombre indica, podremos identificar patrones referentes a la distribución de los datos como puede ser el rango con mayor frecuencia de aparición, etc. Recursos https://corporatefinanceinstitute.com/resources/excel/study/histogram/

Gráficas de relación

Cuando nos enfrentamos a un conjunto de datos nuestro cerebro intenta crear relaciones entre los distintos conjuntos. Esto es normal, ya que como seres humanos que somos, siempre intentamos buscar una relación, es la forma que tenemos de asociar acciones. Si bebo agua me quita la sed, a mayor número de ventas de videojuegos en una consola más popular es ¿o no? Estas relaciones que buscamos inconscientemente pueden tener o no sentido y es ahí dónde entra el papel del analista de datos. Debe ser quien determine si la una relación entre ciertos conjuntos de datos tiene sentido o no. Hoy nos centraremos en como podemos facilitarnos la vida para poder ver estas relaciones gracias a una serie de gráficos pensados para esto, relacionar datos. Gráfico de barras (barplot) Este gráfico presenta su fuerte cuando se trata de agrupar por valores categóricos y comparar sus valores numéricos como puede ser, ventas de juegos por categorías de los mismos. El gráfico anterior parece sencillo de hacer, pero si no te percatas de algunas características puedes caer en ciertos errores típicos. El gráfico está ordenado. Con este tipo de gráficos solemos buscar comparar entre las categorías, por eso es mejor dar los datos ordenados, para facilitar esta comparación a la vista. Empieza desde cero. Aunque parezca obvio es fácil ignorar los valores cuando todas las barras son mayores de 200, por ejemplo. Debe de partir desde cero siempre. Colores con sentido. En este caso buscamos resaltar como disminuye el valor entre las diferentes islas, por esto todas las barras tienen un mismo tono verde más o menos intenso. Si buscamos resaltar ciertos valores es interesante darle un color más potente a estos y dejar el resto de datos con colores más apagados, por el mismo motivo de antes, facilitar al usuario obtener la información que busca. Incluir anotaciones de valores. Como podemos ver en el ejemplo cada barra tiene su valor exacto. Esto puede resultar útil sobre todo, cuando dos de ellas están prácticamente en el mismo punto y difícilmente podemos ver la diferencia o simplemente este valor nos es útil, que también puede darse el caso. Voltear el gráfico si son muchos valores. Existe un caso en el que voltear el gráfico tiene sentido, cuando tenemos tantos valores por los que clasificar que se solaparían entre sí. En estos casos es casi obligatorio cambiar la posición de los valores como mostramos a continuación. Gráfico de puntos (Scatter plot) En este caso el gráfico de puntos es más interesante si nos encontramos con dos variables de tipo numérico a diferencia del caso anterior dónde uno de los valores a comparar era de tipo categórico. Como todos los gráficos de este artículo será de utilidad a la hora de comprobar relaciones entre datos de nuestro conjunto. Por ejemplo, podemos ver si existe una relación entre la cantidad de accidentes de tráfico y la velocidad a la que iba el vehículo. Un punto a destacar interesante de este tipo de gráficos es que nos permite añadir una tercera variable categórica a tener en cuenta. Por ejemplo, si queremos comprobar si existe relación entre el peso, la altura y el género de un bebé recién nacido podremos hacerlo de la siguiente forma. Como podemos ver estas gráficas nos ayudan a ver una correlación entre los datos, pero tenemos que tener cuidado porque nuestras interpretaciones pueden estar equivocadas. Podemos estar viendo una relación clara que está ahí por causa de otro campo de nuestros datos. Por ejemplo, si vemos una relación entre el año y el número de crímenes en una población. En esta relación se ve como claramente cuando avanzamos en el tiempo más crímenes ocurren y podríamos concluir que con el tiempo las personas se vuelven más propensas al crimen, pero en realidad este aumento está relacionado con la población que aumenta. Es decir cuanta más población la probabilidad de que ocurra un crimen es mayor y no tiene que ver el tiempo en esto. Es por ello que tenemos que cuidar y hacer un análisis completo de los datos. La correlación no implica causa En este tipo de gráficos puede ser de gran ayuda añadir una línea de tendencias para dejar más claro hacia donde va la relación del conjunto. Problemática 🤦‍♂️ Las gráficas de puntos presentan una problemática que por suerte tiene varias soluciones, el overplotting. Este término indica que podemos estar superponiendo puntos sin darnos cuenta. Y si nos paramos a pensarlo tiene sentido. En el ejemplo anterior de los bebés que han nacido con cierto peso y altura si nos fijamos los puntos son más grandes que en el primer caso y son semitransparentes. Con este detalle podemos ver si hay una aglomeración en un punto de la gráfica, ya que se verá de un color más intenso, como ocurre en el punto 58 del eje de las equis. Otra opción es darle un tamaño distinto a los puntos en función de las repeticiones que tenga, por ejemplo. O un degradado de los mismos. Aunque llegados a este punto puede que nos interese más usar un mapa de calor 👀 De igual forma, si el valor exacto no nos es tan importante como la relación en sí, podemos aplicar un desplazamiento mínimo a los puntos para que pueda verse mejor la densidad. Esto es un tipo de gráfico especial, el swarm plot. Swarm plot Este último tipo de gráficos resulta de gran utilidad cuando queremos tener un gráfico de puntos, pero uno de nuestros ejes no es numérico como por ejemplo, la cuenta total de las mesas de un restaurante según el día de la semana. Si no aplicamos jitter nos queda de esta forma, el jitter no es más que la separación de la que hablábamos antes. Aplicando esta separación quedaría de la siguiente forma. Recursos Para escribir este artículo he consultado muchos artículos y recursos dispersos, pero de los más interesantes que he encontrado han sido precisamente los de seaborn, la librería más conocida en Python para esto. Barplot Scatterplot Swarmplot Plotting with categorial data Visualizing statistical relationships

Comprendiendo los heatmap (mapa de calor)

Este tipo de gráfico, mapa de calor, es muy útil a la hora de comparar valores numéricos de una relación. Es decir, si por ejemplo tenemos las ventas de videojuegos clasificadas por plataforma y año como se muestra a continuación Plataforma Año Ventas Wii 2000 100 Wii 2001 150 Wii 2002 50 DS 2000 98 DS 2001 118 DS 2002 134 Si esta tabla de datos fuera mucho mayor con cientos de miles de entradas sería bastante complicado hacer una comparación de sus datos con otro tipo de gráficas. Con el mapa de calor podremos hacer un eje de coordenadas como si de un mapa de hundir la flota se tratase. Dónde, en los ejes en lugar de letras y números tengamos el nombre de la plataforma y el año en el que ocurren las ventas. Y luego dentro de este mapa pondremos los valores que corresponda a cada intersección. La parte interesante viene ahora, este mapa además colorea con un degradado todas las casillas de tal manera que las que tengan un valor mayor sea de un color más intenso y las de menor valor de un tono más claro. Con esto lo que logramos es ver patrones más fácilmente de momentos en los que han habido muchas ventas. Te dejo un ejemplo a continuación Como puedes ver en la imágen anterior la Play 1 tuvo su pico de ventas en 1998. También podemos ver como entre 2008 y 2012 hubo un gran numero de ventas repartido entre diferentes plataformas. Para poder crear este tipo de gráficos con la librería Seaborn en Python necesitaremos que los datos que los datos estén formateados de tal manera que las cabeceras sean uno de los ejes y los índices el otro. Estos dos son los únicos datos que pueden no ser numéricos el resto debe de serlo. El conjunto de datos (dataset) que usaremos tendrá la siguiente forma: 2000 2001 2002 Wii 100 250 50 DS 98 118 2002 import seaborn as sns heatmap_data = create_data_frame_with_sales_per_year_and_platforms(data) ax = sns.heatmap(heatmap_data, annot=True) Este ejemplo ha salido de las sesiones que he hecho en directo aprendiendo visualización de datos. Puedes ver las sesiones grabadas en youtube o en directo por Twitch además subo a github todo los ejercicios que vamos haciendo y los apuntes.