Diagrama de caja de Seaborn - Tutorial y ejemplos

En este tutorial, cubriremos cómo trazar un diagrama de caja en Seaborn y Python con ejemplos detallados de trazado y personalización.

Introducción

Seaborn es una de las bibliotecas de visualización de datos más utilizadas en Python, como una extensión de Matplotlib. Ofrece una API simple, intuitiva pero altamente personalizable para la visualización de datos.

En este tutorial, veremos cómo trazar un diagrama de caja en Seaborn.

Los diagramas de caja se utilizan para visualizar estadísticas resumidas de un conjunto de datos, mostrando atributos de la distribución como el rango y la distribución de los datos.

Importar datos

Tendremos que seleccionar un conjunto de datos con características continuas para crear un diagrama de caja, porque los diagramas de caja muestran estadísticas de resumen para variables continuas: la mediana y el rango de un conjunto de datos. Trabajaremos con el conjunto de datos Incendios forestales.

Comenzaremos con la importación de Pandas para cargar y analizar el conjunto de datos. Obviamente, también querremos importar Seaborn. Finalmente, importaremos el módulo Pyplot de Matplotlib, para que podamos mostrar las visualizaciones:

1
2
3
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns

Usemos Pandas para leer el archivo CSV y verifiquemos cómo se ve nuestro DataFrame imprimiendo su encabezado. Además, querremos verificar si el conjunto de datos contiene valores faltantes:

1
2
3
dataframe = pd.read_csv("forestfires.csv")
print(dataframe.head())
print(dataframe.isnull().values.any())
1
2
3
4
5
6
7
   X  Y month  day  FFMC   DMC     DC  ISI  temp  RH  wind  rain  area
0  7  5   mar  fri  86.2  26.2   94.3  5.1   8.2  51   6.7   0.0   0.0
1  7  4   oct  tue  90.6  35.4  669.1  6.7  18.0  33   0.9   0.0   0.0
2  7  4   oct  sat  90.6  43.7  686.9  6.7  14.6  33   1.3   0.0   0.0
3  8  6   mar  fri  91.7  33.3   77.5  9.0   8.3  97   4.0   0.2   0.0
4  8  6   mar  sun  89.3  51.3  102.2  9.6  11.4  99   1.8   0.0   0.0
False

The second print statement returns False, which means that there isn't any missing data. If there were, we'd have to manejar los valores faltantes de DataFrame.

Después de verificar la consistencia de nuestro conjunto de datos, queremos seleccionar las características continuas que queremos visualizar. Las guardaremos como sus propias variables por conveniencia:

1
2
3
4
5
6
FFMC = dataframe["FFMC"]
DMC = dataframe["DMC"]
DC = dataframe["DC"]
RH = dataframe["RH"]
ISI = dataframe["ISI"]
temp = dataframe["temp"]

Trazado de un diagrama de caja en Seaborn

Ahora que hemos cargado los datos y seleccionado las características que queremos visualizar, ¡podemos crear los diagramas de caja!

Podemos crear el diagrama de caja simplemente usando la función boxplot de Seaborn. Pasamos el dataframe así como las variables que queremos visualizar:

1
2
sns.boxplot(x=DMC)
plt.show()

diagrama de caja simple de Seaborn

Si queremos visualizar solo la distribución de una variable categórica, podemos proporcionar nuestra variable elegida como el argumento x. Si hacemos esto, Seaborn calculará los valores en el eje Y automáticamente, como podemos ver en la imagen anterior.

Sin embargo, si hay una distribución específica que queremos ver segmentada por tipo, también podemos proporcionar una variable X categórica y una variable Y continua.

1
2
3
day = dataframe["day"]
sns.boxplot(x=DMC, y=day)
plt.show()

diagrama de caja variable x e y de seaborn

Esta vez, podemos ver un diagrama de caja generado para cada día de la semana, como se especifica en el conjunto de datos.

Si queremos visualizar varias columnas al mismo tiempo, ¿qué proporcionamos a los argumentos x e y? Bueno, proporcionamos las etiquetas para los datos que queremos y proporcionamos los datos reales usando el argumento data.

Podemos crear un nuevo DataFrame que contenga solo los datos que queremos visualizar, y fundirlo() en el argumento data, proporcionando etiquetas como x='variable' y y='value' :

1
2
3
df = pd.DataFrame(data=dataframe, columns=["FFMC", "DMC", "DC", "ISI"])
sns.boxplot(x="variable", y="value", data=pd.melt(df))
plt.show()

diagrama de cuadro de argumento de datos de seaborn

Personalizar un diagrama de caja de Seaborn

Cambiar los colores del gráfico de caja

Seaborn asignará automáticamente los diferentes colores a diferentes variables para que podamos diferenciarlos visualmente fácilmente. Sin embargo, también podemos proporcionar una lista de colores que se utilizarán si deseamos especificarlos.

Después de elegir una lista de colores con valores hexadecimales (o cualquier color Matplotlib válido), podemos pasarlos al argumento paleta:

1
2
3
4
day = dataframe["day"]
colors = ['#78C850', '#F08030', '#6890F0','#F8D030', '#F85888', '#705898', '#98D8D8']
sns.boxplot(x=DMC, y=day, palette=colors)
plt.show()

diagrama de caja de colores de cambio de seaborn

Personalizar etiquetas de ejes

Podemos ajustar las etiquetas del eje X y del eje Y fácilmente usando Seaborn, como cambiar el tamaño de fuente, cambiar las etiquetas o rotarlas para que las marcas sean más fáciles de leer:

1
2
3
4
5
6
df = pd.DataFrame(data=dataframe, columns=["FFMC", "DMC", "DC", "ISI"])
boxplot = sns.boxplot(x="variable", y="value", data=pd.melt(df))
boxplot.axes.set_title("Distribution of Forest Fire Conditions", fontsize=16)
boxplot.set_xlabel("Conditions", fontsize=14)
boxplot.set_ylabel("Values", fontsize=14)
plt.show()

Seaborn personaliza etiquetas de eje de diagrama de caja

Ordenar diagramas de caja

Si queremos ver los cuadros en un orden específico, podemos hacerlo haciendo uso del argumento order y proporcionando los nombres de las columnas en el orden en que desea verlos:

1
2
3
4
5
6
df = pd.DataFrame(data=dataframe, columns=["FFMC", "DMC", "DC", "ISI"])
boxplot = sns.boxplot(x="variable", y="value", data=pd.melt(df), order=["DC", "DMC", "FFMC", "ISI"])
boxplot.axes.set_title("Distribution of Forest Fire Conditions", fontsize=16)
boxplot.set_xlabel("Conditions", fontsize=14)
boxplot.set_ylabel("Values", fontsize=14)
plt.show()

diagramas de caja de orden marino

Creación de subparcelas

Si quisiéramos separar los gráficos de las características individuales en sus propios subgráficos, podríamos hacerlo creando una figura y ejes con la función subgráficos de Matplotlib. Luego, usamos el objeto axes y accedemos a ellos a través de su índice. La función boxplot() acepta un argumento ax, especificando en qué ejes debe trazarse:

1
2
3
4
fig, axes = plt.subplots(1, 2)
sns.boxplot(x=day, y=DMC, orient='v', ax=axes[0])
sns.boxplot(x=day, y=DC, orient='v', ax=axes[1])
plt.show()

seaborn create box plot subplots

Diagrama de caja con puntos de datos {#diagrama de caja con puntos de datos}

Incluso podríamos superponer un diagrama de pantano en el diagrama de caja para ver la distribución y las muestras de los puntos que componen esa distribución, con un poco más de detalle.

Para hacer esto, simplemente creamos un único objeto de figura y luego creamos dos gráficos diferentes. El stripplot() se superpondrá sobre el boxplot(), ya que están en los mismos ejes/figura:

1
2
3
4
5
6
7
df = pd.DataFrame(data=dataframe, columns=["FFMC", "DMC", "DC", "ISI"])
boxplot = sns.boxplot(x="variable", y="value", data=pd.melt(df), order=["DC", "DMC", "FFMC", "ISI"])
boxplot = sns.stripplot(x="variable", y="value", data=pd.melt(df), marker="o", alpha=0.3, color="black", order=["DC", "DMC", "FFMC", "ISI"])
boxplot.axes.set_title("Distribution of Forest Fire Conditions", fontsize=16)
boxplot.set_xlabel("Conditions", fontsize=14)
boxplot.set_ylabel("Values", fontsize=14)
plt.show()

diagrama de franja superpuesto seaborn sobre diagrama de caja

Conclusión

En este tutorial, hemos repasado varias formas de trazar un diagrama de caja usando Seaborn y Python. También hemos cubierto cómo personalizar los colores, las etiquetas, el orden, así como superponer Swarmplots y subtrazar múltiples Box Plots.

Si está interesado en Visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro paquete de libros en [Visualización de datos en Python](https://gum.co/data-visualization -en-paquete-de-libros-de-python):

Visualización de datos en Python Vuélvase peligroso con la visualización de datos ✅ Garantía de devolución de dinero de 30 días sin preguntas ✅ Principiante a Avanzado ✅ Actualizado periódicamente de forma gratuita (última actualización en abril de 2021) ✅ Actualizado con recursos y guías adicionales

Visualización de datos en Python con Matplotlib y Pandas es un libro diseñado para llevar a los principiantes absolutos a Pandas y Matplotlib, con conocimientos básicos de Python, y permitirles construir una base sólida para el trabajo avanzado con estas bibliotecas, desde gráficos simples. a gráficos 3D animados con botones interactivos.

Sirve como una guía detallada que le enseñará todo lo que necesita saber sobre Pandas y Matplotlib, incluido cómo construir tipos de gráficos que no están integrados en la propia biblioteca.

Visualización de datos en Python, un libro para desarrolladores principiantes e intermedios de Python, lo guía a través de la manipulación de datos simple con Pandas, cubre bibliotecas de trazado centrales como Matplotlib y Seaborn, y le muestra cómo aprovechar las bibliotecas declarativas y experimentales. como Altair. Más específicamente, a lo largo de 11 capítulos, este libro cubre 9 bibliotecas de Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas y VisPy.

Sirve como una guía práctica única para la visualización de datos, en una plétora de herramientas que podría usar en su carrera.