EDA Análisis Exploratorio de Datos. Las Maravillas de los Gráficos de Ridgeline para laVisualización de Distribuciones de Datos con Python
¡Descubre el fascinante poder de visualizar la distribución de datos de una manera completamente innovadora! Las visualizaciones de Ridgeline o de Cresta, son gráficas que superan a los tradicionales gráficos para representar las distribuciones de datos.
Estas gráficas de última generación van más allá de los histogramas al brindar una experiencia visual intuitiva y enriquecedora, revelando conexiones y tendencias que se podrían haber pasado por alto
¡Bienvenido a un nuevo nivel de comprensión y análisis exploratorio con las gráficas de distribución de datos!
Estructura del presente artículo:
- Gráficas de Distribución
- Carga y preparación del conjunto de datos
3. Gráfica de cresta para una variable
4. Gráfica de cresta para múltiples variables
5. Conclusiones.
1. Gráficas de Distribución
Las gráficas de distribución ayudan a la interpretación de resultados en el análisis univariado (una sola variable), en la etapa inicial de analítica, para mostrar donde los datos son más densos o escasos en una dimensión. Este tipo de gráficas se utilizan en las investigaciones de mercado, para los análisis demográficos o la segmentación de clientes.
Si desea profundizar sobre las diferentes visualizaciones y donde utilizarlas, dejo este enlace para profundizar sobre “ Tipos de Visualizaciones Aplicables en Ciencia de Datos, Analítica y Estadística.”
2. Carga y preparación del conjunto de datos
Este es el archivo con el que vamos hacer este artículo, Finland, Norway, and Sweden Weather Data 2015–2019. Contiene datos diarios de temperatura del aire y precipitación promedio del país (en unidades métricas). Corresponde a los países de Finlandia, Noruega y Suecia. Puede descargar el archivo .csv y asegúrese de que esté en su entorno actual de trabajo.
La librería “joypy” es la responsable de poder generar las gráficas de líneas de cresta. Los joyplots son gráficos de densidad apilados y parcialmente superpuestos. Son una buena manera de trazar datos para comparar distribuciones, especialmente aquellas que cambian en una dimensión.
Para que funcione esta librería joypy hay que tener instaladas las librerías: “pandas”, “matplotlib”, “scipy >= 0.11” y “numpy”. Importante tener en cuenta que esta librería solo funciona sobre python 3.5+.
pip install joypy # instalación de la librería
Luego procedemos a importar las librerías con las cuales vamos a desarrollar estas interesantes visualizaciones de distribución.
import pandas as pd
import matplotlib.pyplot as plt
from joypy import joyplot
En el proceso de carga del conjunto de datos iniciamos haciendo el cargue respectivo.
df = pd.read_csv('nordics_weather.csv')
df.head(6)
En la salida anterior muestra que nuestro conjunto de datos está formado por siete variables, de las cuales solo vamos a utilizar cuatro.
El siguiente código crea el DataFrame con las cuatro columnas de nuestro interés
df = pd.read_csv('nordics_weather.csv',
usecols=['date', 'country', 'tmin', 'tmax'])
- Cree un dataframe para Finlandia, que tenga datos solo para este país de la columna country
- Convertir la columna Fecha al tipo datetime64
- Extraer los nombres de los meses de la fecha
Finland = df.query("country == 'Finland'")
Finland = Finland .drop('country', axis=1)
Finland ['date'] = Finland ['date'].astype('datetime64')
Finland['Month'] = Finland ['date'].dt.month_name()
Finland .head(4)
El DataFrame parece estar bien; sin embargo, no es consciente con relación a los meses. Pandas tiene una clase CategoricalDtype que puede ayudarnos con esto. Debe especificar el orden de las categorías y realizar la conversión después.
from pandas.api.types import CategoricalDtype
cat_month = CategoricalDtype(
['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December']
)
Finland['Month'] = Finland['Month'].astype(cat_month)
Finland.dtypes
La conversión de tipo se realiza para transformar la columna “Month” en un tipo de dato categórico en lugar de un tipo de dato numérico o de fecha. Hay varias razones por las que se podría realizar esta conversión:
Categorización: Al convertir la columna en un tipo de dato categórico, se puede representar y tratar los valores como categorías en lugar de valores numéricos o de fecha. Esto puede ser útil para realizar análisis y operaciones específicas sobre las categorías, como agrupaciones, conteos y análisis de frecuencia.
Orden y jerarquía: Los tipos de dato categóricos pueden tener un orden y una jerarquía definidos entre las categorías. En el caso de los nombres de los meses, existe un orden natural de enero a diciembre. Al convertir la columna en un tipo categórico, se puede preservar y utilizar este orden en análisis y visualizaciones.
Optimización de memoria: Los tipos de dato categóricos pueden ser más eficientes en términos de uso de memoria que los tipos numéricos o de fecha. Esto puede ser especialmente beneficioso si la columna contiene un conjunto limitado de categorías únicas y se repiten con frecuencia en los datos.
En otras palabras, la conversión de la columna “Month” a un tipo de dato categórico proporciona una representación más apropiada y funcional de los datos, permitiendo realizar análisis específicos y optimizar el uso de memoria en ciertos casos.
3. Gráfica Ridgeline para una sola variable¶
Aquí está el código que necesita para hacer un diagrama de cresta de las temperaturas máximas en Finlandia desde el año 2015 al 2019, con los promedios de los 12 meses.
plt.figure()
joyplot(
data=Finland[['tmax', 'Month']],
by='Month',
colormap = plt.colormaps['Wistia'],
figsize=(12, 8)
)
plt.title('Temperatura Máxima en Finlandia utilizando gráficas de Cresta', fontsize=16)
plt.grid()
Como se puede apreciar en la imagen anterior, los meses de noviembre, diciembre y enero son los más fríos en Finlandia, dado que aquí se está analizando las temperaturas más altas, mientras que los más calurosos son mayo, junio, julio y agosto, a partir de septiembre la temperatura máxima comienza a decrecer. En promedio, el mes de diciembre registra una temperatura máxima de 0 grados Celsius y en enero hay algunos días con la temperatura máxima que puede llegar a los -20 grados.
4. Gráfica de cresta para múltiples variables
Ahora procedemos a hacer las cosas más interesantes introduciendo una segunda variable en la gráfica, la temperatura mínima en Finlandia.
A continuación se presenta el código y la respectiva salida.
plt.figure()
colormap = plt.colormaps['viridis' ],
ax, fig = joyplot(data=Finland[['tmin', 'tmax', 'Month']],
by='Month',
column=['tmin', 'tmax'],
color=['y', 'orange'],
alpha=0.7,
figsize=(10, 6), )
plt.xlabel='Temperatura en grados celcius'
plt.title('Temperatura Máxima y Mínima en finlandia utilizando gráficas de Cresta', fontsize=16)
plt.grid()
plt.show()
Esta es una excelente visualización que nos muestra información importante como lo es el caso de registrarse temperaturas tan bajas que pueden llegar a los -30 grados Celsius en algunos días del mes de enero. En contraste, el mes de julio es el más caluroso, registrando días con temperaturas máximas de 30 grados Celsius.
5 Conclusiones
- Flexibilidad en la representación de segmentos variables: Las gráficas de líneas de cresta ofrecen una forma compacta y versátil de representar segmentos variables de manera efectiva. A diferencia de los histogramas, que pueden resultar limitados al mostrar distribuciones de segmentos, las gráficas de líneas de cresta permiten una visualización más precisa y detallada de las variaciones en diferentes segmentos de una variable. Esto facilita la identificación de patrones específicos y la comparación de segmentos con mayor claridad.
- Mayor claridad en la interpretación de la distribución: Las gráficas de líneas de cresta proporcionan una representación visual clara y concisa de la distribución de variables. A diferencia de los histogramas, que pueden presentar barras superpuestas o dificultades en la interpretación de la densidad en segmentos específicos, las gráficas de líneas de cresta brindan una vista más suave y continua de la distribución. Esto facilita la identificación de cambios graduales, picos o valles en la distribución de los datos, lo que a su vez ayuda a comprender y comunicar de manera más efectiva los patrones y características clave de la variable analizada.
- Evite dibujar histogramas y gráficas de densidad manualmente para segmentos variables, en su lugar las visualizaciones de líneas de cresta son la mejor alternativa.
En resumen, las gráficas de líneas de cresta ofrecen flexibilidad en la representación de segmentos variables y brindan una interpretación más clara y detallada de la distribución de datos en comparación con los histogramas. Estas ventajas hacen que las gráficas de líneas de cresta sean una elección recomendada para visualizar distribuciones de variables de forma compacta y efectiva.