Distribución de Seaborn / Gráfico de histograma: 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 una gráfica de distribución en Seaborn. Cubriremos cómo trazar un diagrama de distribución con Seaborn, cómo cambiar los tamaños de contenedor de un diagrama de distribución, así como trazar diagramas de estimación de densidad del núcleo sobre ellos y mostrar datos de distribución en lugar de datos de recuento.

    Datos de importacion

    Usaremos el Programas de Netflix conjunto de datos y visualizar las distribuciones desde allí.

    Importemos Pandas y carguemos en el conjunto de datos:

    import pandas as pd
    
    df = pd.read_csv('netflix_titles.csv')
    

    ¿Cómo trazar una parcela de distribución con Seaborn?

    Seaborn tiene diferentes tipos de parcelas de distribución que es posible que desee utilizar.

    Estos tipos de gráficos son: KDE Plots (kdeplot()) y gráficos de histograma (histplot()). Ambos se pueden lograr a través del genérico displot() función, oa través de sus respectivas funciones.

    Nota: Desde Seaborn 0.11, distplot() convirtió displot(). Si está utilizando una versión anterior, deberá utilizar también la función anterior.

    Empecemos a trazar.

    Trazar histograma / diagrama de distribución (trazar) con Seaborn

    Sigamos adelante e importemos los módulos necesarios y generemos un gráfico de histograma / distribución.

    Visualizaremos la distribución de la release_year función, para ver cuándo Netflix fue más activo con nuevas incorporaciones:

    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    import seaborn as sns
    
    # Load the data
    df = pd.read_csv('netflix_titles.csv')
    # Extract feature we're interested in
    data = df['release_year']
    
    # Generate histogram/distribution plot
    sns.displot(data)
    
    plt.show()
    

    Ahora, si ejecutamos el código, seremos recibidos con un diagrama de histograma, que muestra el recuento de apariciones de estos release_year valores:

    Trazar parcela de distribución con información de densidad con Seaborn

    Ahora, al igual que con Matplotlib, el enfoque de histograma predeterminado es contar el número de ocurrencias. En su lugar, puede visualizar la distribución de cada uno de estos release_years en porcentajes.

    Modifiquemos el displot() llamar para cambiar eso:

    # Extract feature we're interested in
    data = df['release_year']
    
    # Generate histogram/distribution plot
    sns.displot(data, stat="density")
    
    plt.show()
    

    Lo único que tenemos que cambiar es proporcionar la stat argumento, y hacerle saber que nos gustaría ver la densidad, en lugar de la 'count'.

    Ahora, en lugar del recuento que hemos visto antes, se nos presentará la densidad de entradas:

    Cambiar el tamaño del contenedor de parcela de distribución con Seaborn

    A veces, los tamaños de contenedores automáticos no nos funcionan muy bien. Son demasiado grandes o demasiado pequeños. De forma predeterminada, el tamaño se elige en función de la variación observada en los datos, pero esto a veces no puede ser diferente de lo que nos gustaría sacar a la luz.

    En nuestra trama, son un poco demasiado pequeños y están colocados de manera incómoda con espacios entre ellos. Podemos cambiar el tamaño del contenedor configurando el binwidth para cada bandeja, o estableciendo el número de bins:

    data = df['release_year']
    
    sns.displot(data, binwidth = 3)
    
    plt.show()
    

    Esto hará que cada contenedor incluya datos en rangos de 3 años:

    O podemos establecer un número fijo de bins:

    data = df['release_year']
    
    sns.displot(data, bins = 30)
    
    plt.show()
    

    Ahora, los datos se empaquetarán en 30 contenedores y, según el rango de su conjunto de datos, serán muchos contenedores o una cantidad muy pequeña:

    Otra excelente manera de deshacerse de las brechas incómodas es establecer el discrete argumento para True:

    data = df['release_year']
    
    sns.displot(data, discrete=True)
    
    plt.show()
    

    Esto resulta en:

    Trazar el diagrama de distribución con KDE

    Un gráfico común para trazar junto con un histograma es el gráfico de estimación de densidad de kernel. Son suaves y no pierde ningún valor al capturar rangos de valores en contenedores. Puede establecer un valor de intervalo más grande, superponer un gráfico de KDE sobre el histograma y tener toda la información relevante en la pantalla.

    Afortunadamente, dado que esto era algo muy común, Seaborn nos permite trazar un diagrama de KDE simplemente configurando el kde argumento para True:

    data = df['release_year']
    
    sns.displot(data, discrete = True, kde = True)
    
    plt.show()
    

    Esto ahora resulta en:

    Parcela Parcela de distribución conjunta con Seaborn

    A veces, es posible que desee visualizar varias funciones entre sí y sus distribuciones. Por ejemplo, es posible que queramos visualizar la distribución de las calificaciones del programa, así como el año de su adición. Si buscáramos ver si Netflix comenzó a agregar más contenido para niños a lo largo de los años, esta sería una gran combinación para una trama conjunta.

    Hagamos un jointplot():

    df = pd.read_csv('netflix_titles.csv')
    df.dropna(inplace=True)
    
    sns.jointplot(x = "rating", y = "release_year", data = df)
    
    plt.show()
    

    Hemos eliminado los valores nulos aquí ya que Seaborn tendrá problemas para convertirlos en valores utilizables.

    Aquí, hemos creado un gráfico de histograma para la función de clasificación, así como un gráfico de histograma para la función release_year:

    Podemos ver que la mayoría de las entradas agregadas son TV-MA, sin embargo, también hay muchas entradas de TV-14, por lo que hay una buena selección de programas para toda la familia.

    Conclusión

    En este tutorial, hemos repasado varias formas de trazar una gráfica de distribución usando Seaborn y Python.

    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.

    Visualización de datos en Python

    ¡Comprenda mejor sus datos con visualizaciones! Con 340 páginas, aprenderá los entresijos de la visualización de datos en Python con bibliotecas populares como Matplotlib, Seaborn, Bokeh y más.

    .

    Etiquetas:

    Deja una respuesta

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