Python

Visualización de datos categóricos en Seaborn

Los datos categóricos también se pueden visualizar mediante gráficos de Seaborn. Algo que es especialmente útil cuando se desea explorar y mostrar los patrones y relaciones que existen entre las variables categóricas de un conjunto de datos. En esta entrada se mostrará algunas de las gráficas que existen para la creación de visualizaciones de datos categóricos en Seaborn.

Conjunto de datos de ejemplo

El conjunto de datos que se utilizará en esta entrada para la creación de las gráficas es tips. En donde recopilan las propinas recibidas en un restaurante en función de datos como el tamaño de la mesa, el día y otros datos de los comensales. Este conjunto de datos se incluye en el paquete Seaborn y se puede importar en un DataFrame de Pandas usando la función load_dataset().

import seaborn as sns

# Cargar el conjunto de datos "tips" de Seaborn
tips = sns.load_dataset("tips")

# Imprimir los últimos registros del conjunto de datos
print(tips.tail())
     total_bill   tip     sex smoker   day    time  size
239       29.03  5.92    Male     No   Sat  Dinner     3
240       27.18  2.00  Female    Yes   Sat  Dinner     2
241       22.67  2.00    Male    Yes   Sat  Dinner     2
242       17.82  1.75    Male     No   Sat  Dinner     2
243       18.78  3.00  Female     No  Thur  Dinner     2

Gráfico de barras

Una de las opciones más habituales para representar datos categóricos son los gráficos de barras. En Seaborn, la función que implementa estos gráficos es barplot(). Pudiendo utilizar esta función para mostrar la relación que existe entre las variables categóricas y numéricas. Por ejemplo, en el conjunto de datos de propinas se puede mostrar la relación entre la factura total (variable numérica) y el día de la semana (variable categórica).

# Gráfico de barras
sns.barplot(data=tips, x="day", y="total_bill", errorbar=None)
Gráfico de barras con el promedio de la factura en función de día de la semana

En este ejemplo lo que se muestra en el eje y es el promedio, el estadístico que se muestra por defecto en esta función de Seaborn, de la factura en función del día de la semana. Observándose como este valor aumenta los sábados y domingos respecto a otros días de la semana. Nótese que, para simplificar la gráfica, se ha eliminado la barra de error que se muestra por defecto.

Si se desea profundizar en las opciones de esta función se puede consultar la entrada sobre las gráficas de barra que se ha publicado en la serie.

Gráfico de conteo

Los gráficos de conteo muestran la frecuencia de cada categoría en un conjunto de datos. Estos gráficos se pueden crear con barplot() usando len como estimador, aunque, dada su importancia, existe una función específica en Seaborn para crearlos: countplot(). Para crear un gráfico de conteo solamente hay que pasar el conjunto de datos y la variable categórica que se desea mostrar.

# Gráfico de conteo
sns.countplot(data=tips, x="day")
Gráfico de conteo con el número de registros en función del día de la semana

En este caso se puede ver el número de registros que hay en base al día de la semana. Observándose en esta ocasión una caída de las visitas el viernes respectó al resto de días.

Diagrama de caja y bigotes (boxplot)

Los diagramas de cajas y bigotes (boxplot) muestran la mediana y el rango intercuartil de los datos categóricos. Este tipo de gráficos son de gran utilidad cuando se desea visualizar la distribución y los valores atípicos de una variable numérica en función de una variable categórica. En Seaborn la función con la que se puede construir este tipo de gráficos es boxplot(). Por ejemplo, se puede ver la evolución de la factura en función del día de la semana.

# Gráfico de boxplot
sns.boxplot(data=tips, x="day", y="total_bill")
Diagrama de caja y bigotes (boxplot) en la que se puede ver la dispersión de la factura en función del día de la semana

Al igual que en la gráfica de barras aquí también se puede observar como la factura media crece los fines de semana, aunque en este caso se pueden ver también los valores atípicos y la distribución de los datos. El fin de semana también parece que hay una mayor variabilidad en cuanto a la cuantía de la factura total.

Gráfico de violín

Los gráficos de violín combinan un gráfico de barras y un gráfico de densidad para representar la distribución de datos categóricos. Seaborn proporciona la función violinplot() para trazar gráficos de violín.

# Gráfico de violín
sns.violinplot(data=tips, x="day", y="total_bill")
Gráfico de violín en la que se puede ver la dispersión de la factura en función del día de la semana

Estos gráficos muestran un mayor de detalle de la distribución de datos que se observa en la factura total en función del día de la semana.

Gráfico de dispersión de enjambre (swarmplot)

En Seaborn también se pueden encontrar los gráficos de dispersión de enjambre o gráfico de enjambre (swarmplot) que muestra los puntos individuales para cada una de las observaciones de datos categóricos. Distribuyendo estos a lo largo del eje categórico para evitar su superposición. Generando así unas gráficas de dispersión que se asemejan a los gráficos de violín. Estos gráficos se pueden crear con la función swarmplot() indicando el conjunto de datos, la variable categórica y la variable numérica.

# Gráfico de swarmplot
sns.swarmplot(data=tips, x="day", y="total_bill")
Gráfico de dispersión de enjambre en la que se puede ver la dispersión de la factura en función del día de la semana

Es importante tener en cuenta que los gráficos de dispersión de enjambre pueden no ser adecuados para conjuntos de datos muy grandes, ya que podría existir una superposición significativa de puntos en el gráfico.

Conclusiones

En esta entrada se han visto algunas de las herramientas que existen para crear visualizaciones de datos categóricos en Seaborn. Para lo que se ha usado gráficos de barra, gráficos de conteo, diagramas de caja y bigotes, gráficos de violín y gráficos de dispersión de enjambre.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Seaborn

Recent Posts

Los récords con asterisco, o la épica del titular sin contexto – El bestiario de los indicadores económicos absurdos (parte 8 y final)

Y llegamos al final de una serie que había programado para ser de tres entradas.…

2 días ago

PSI: Cómo Saber Cuándo tu Modelo de Credit Scoring se ha Degradado

Un modelo de credit scoring no es un artefacto estático. Se construye en un momento…

4 días ago

Los indicadores que se autocumplen, o cuando medir es modificar – El bestiario de los indicadores económicos absurdos (parte 7)

En las seis entregas anteriores hemos paseado por casi todos los géneros del disparate económico:…

1 semana ago

Customer Lifetime Value: la fórmula clásica que todo analista debería dominar

El Customer Lifetime Value (CLV) es, probablemente, la métrica más importante que puede calcular una…

2 semanas ago

Analytics Lane lanza la versión 1.4 del laboratorio con nuevas herramientas de conversión y modelos avanzados de CLV

Seguimos ampliando el laboratorio de Analytics Lane con el lanzamiento de la versión 1.4, que…

2 semanas ago

This website uses cookies.