Diagrama de caja de Seaborn – Tutorial y ejemplos

D

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.

Datos de importacion

Necesitaremos seleccionar un conjunto de datos con características continuas para crear un diagrama de caja, porque los diagramas de caja muestran estadísticas resumidas para las variables continuas: la mediana y el rango de un conjunto de datos. Estaremos trabajando con el Incendios forestales conjunto de datos.

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

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 DataFrame parece imprimiendo su cabeza. Además, queremos verificar si el conjunto de datos contiene valores faltantes:

dataframe = pd.read_csv("forestfires.csv")
print(dataframe.head())
print(dataframe.isnull().values.any())
   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

Vuelve la segunda declaración impresa False, lo que significa que no faltan datos. Si los hubiera, tendríamos que manejar los valores de DataFrame faltantes.

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

FFMC = dataframe["FFMC"]
DMC = dataframe["DMC"]
DC = dataframe["DC"]
RH = dataframe["RH"]
ISI = dataframe["ISI"]
temp = dataframe["temp"]

Trazar 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 Seaborn’s boxplot función. Pasamos tanto el marco de datos como las variables que queremos visualizar:

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

Si queremos visualizar solo la distribución de una variable categórica, podemos proporcionar nuestra variable elegida como el x argumento. 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.

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

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 al x y y argumentos? Bueno, proporcionamos las etiquetas para los datos que queremos y proporcionamos los datos reales utilizando el data argumento.

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

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

Personalizar un diagrama de caja de Seaborn

Cambiar colores de diagrama 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 nos gustaría especificarlos.

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

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

Personalizar etiquetas de eje

Podemos ajustar las etiquetas del eje X e Y fácilmente usando Seaborn, como cambiar el tamaño de fuente, cambiar las etiquetas o rotarlas para facilitar la lectura de las marcas:

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()

Pedido de diagramas de caja

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

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()

Crear subparcelas

Si quisiéramos separar las gráficas de las características individuales en sus propias subtramas, podríamos hacerlo creando una figura y ejes con el subplots función de Matplotlib. Entonces, usamos el axes objeto y acceda a ellos a través de su índice. los boxplot() función acepta un ax argumento, especificando en qué axes debe graficarse en:

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()

Diagrama de caja con puntos de datos

Incluso podríamos superponer un swamplot en el Box Plot 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 objeto de figura única y luego creamos dos gráficos diferentes. los stripplot() se superpondrá sobre el boxplot(), ya que están en el mismo axes/figure:

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()

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 la visualización de datos y no sabe por dónde empezar, asegúrese de consultar nuestro libro sobre Visualización de datos en Python.

Data Visualization in Python, un libro para desarrolladores de Python principiantes e intermedios, lo guiará a través de la manipulación simple de datos con Pandas, cubrirá bibliotecas de trazado centrales como Matplotlib y Seaborn, y le mostrará cómo aprovechar las bibliotecas declarativas y experimentales como Altair.

 

 

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad