Diagrama de caja de Seaborn – Tutorial y ejemplos

    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.

     

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *