Diagrama de histograma/distribución de Seaborn: tutorial y ejemplos

En este tutorial, repasaremos cómo trazar un gráfico de histograma/distribución en Python usando Seaborn. Cubriremos gráficos de histogramas, tamaños de contenedores de histogramas, así como gráficos de densidad 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 gráfico de distribución en Seaborn. Cubriremos cómo trazar un gráfico de distribución con Seaborn, cómo cambiar los tamaños de los contenedores de un gráfico de distribución, así como trazar gráficos de estimación de densidad del kernel encima de ellos y mostrar datos de distribución en lugar de datos de conteo.

Importar datos

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

Importemos Pandas y carguemos el conjunto de datos:

1
2
3
import pandas as pd

df = pd.read_csv('netflix_titles.csv')

¿Cómo trazar un gráfico de distribución con Seaborn?

Seaborn tiene diferentes tipos de diagramas de distribución que quizás desee usar.

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

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

Vamos a empezar a trazar.

Trazar Histograma/Distribución Trazar (displot) con Seaborn

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

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
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 gráfico de histograma, que muestra el recuento de las ocurrencias de estos valores release_year:

gráfico de histograma nacido en el mar

Parcela de distribución Parcela 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 la llamada displot() para cambiar eso:

1
2
3
4
5
6
7
# Extract feature we're interested in
data = df['release_year']

# Generate histogram/distribution plot
sns.displot(data, stat = 'density')

plt.show()

Lo único que necesitamos cambiar es proporcionar el argumento stat y dejarle saber que nos gustaría ver la densidad, en lugar del 'recuento'.

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

información de densidad de histograma nacida en el mar

Cambiar el tamaño del contenedor del gráfico de distribución con Seaborn

A veces, los tamaños de contenedores automáticos no funcionan muy bien para nosotros. 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 resaltar.

En nuestra trama, son 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 contenedor, o configurando el número de contenedores:

1
2
3
4
5
data = df['release_year']

sns.displot(data, binwidth = 3)

plt.show()

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

cambiar los tamaños de los contenedores de histograma seaborn

O bien, podemos establecer un número fijo de contenedores:

1
2
3
4
5
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 realmente pequeña:

número de contenedor de histograma seaborn

Otra excelente manera de deshacerse de las brechas incómodas es establecer el argumento “discreto” en “Verdadero”:

1
2
3
4
5
data = df['release_year']

sns.displot(data, discrete=True)

plt.show()

Esto resulta en:

histogram discrete data seaborn

Trazar distribución Trazar con KDE

Un gráfico común para trazar junto con un histograma es el gráfico de estimación de la densidad del kernel. Son suaves y no pierde ningún valor al arrebatar 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 gráfico de KDE simplemente configurando el argumento kde en True:

1
2
3
4
5
data = df['release_year']

sns.displot(data, discrete = True, kde = True)

plt.show()

Esto ahora resulta en:

trazar histograma con kde seaborn

Parcela Parcela de distribución conjunta con Seaborn

A veces, es posible que desee visualizar varias funciones entre sí y sus distribuciones. Por ejemplo, podríamos querer visualizar la distribución de las calificaciones del programa, así como el año en que se agregaron. 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 excelente combinación para una trama conjunta.

Hagamos un jointplot():

1
2
3
4
5
6
df = pd.read_csv('netflix_titles.csv')
df.dropna(inplace=True)

sns.jointplot(x = "rating", y = "release_year", data = df)

plt.show()

Hemos descartado 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 calificación, así como un gráfico de histograma para la función año_de_lanzamiento:

gráfico de histograma conjunto seaborn

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 un gráfico de distribución usando Seaborn y Python.

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.