Gráfico de histograma de Matplotlib - Tutorial y ejemplos

En este tutorial, veremos cómo trazar un gráfico de histograma en Python usando Matplotlib. Cubriremos gráficos de histogramas, tamaños de contenedores de histogramas, así como gráficos de densidad y personalización.

Introducción

Matplotlib es una de las bibliotecas de visualización de datos más utilizadas en Python. Desde visualizaciones simples a complejas, es la biblioteca de referencia para la mayoría.

En este tutorial, veremos cómo trazar un gráfico de histograma en Matplotlib. Los gráficos de histogramas son una excelente manera de visualizar distribuciones de datos: en un histograma, cada barra agrupa números en rangos. Las barras más altas muestran que hay más datos en ese rango.

Un histograma muestra la forma y la dispersión de datos de muestra continuos.

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

Trace un gráfico de histograma en Matplotlib

Ahora, con el conjunto de datos cargado, importemos el módulo PyPlot de Matplotlib y visualicemos la distribución de release_years de los programas que están en vivo en Netflix:

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('netflix_titles.csv')
plt.hist(df['release_year'])

plt.show()

Aquí, tenemos un escenario de configuración mínima. Cargamos los datos en un DataFrame (df), luego usamos la instancia de PyPlot y llamamos a la función hist() para trazar un histograma para la función release_year. De forma predeterminada, esto contará el número de ocurrencias de estos años, completará las barras en rangos y trazará el histograma.

Ejecutar este código da como resultado:

matplotlib simple histogram plot tutorial

Aquí, los bins (rangos) de la película se establecen en 10 años. Cada barra aquí incluye todos los programas/películas en lotes de 10 años. Por ejemplo, podemos ver que se lanzaron alrededor de ~750 programas entre 2000 y 2010. Al mismo tiempo, se lanzaron ~5000 entre 2010 y 2020.

Estos son rangos bastante grandes para la industria del cine, tiene más sentido visualizar esto para rangos menores a 10 años.

Cambiar el tamaño del contenedor del histograma en Matplotlib

Digamos, visualicemos un diagrama de histograma (distribución) en lotes de 1 año, ya que este es un marco de tiempo mucho más realista para estrenos de películas y programas.

Importaremos numpy, ya que nos ayudará a calcular el tamaño de los contenedores:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.read_csv('netflix_titles.csv')
data = df['release_year']

plt.hist(data, bins = np.arange(min(data), max(data) + 1, 1))

plt.show()

Esta vez, hemos extraído la columna DataFrame en una variable data, solo para que sea un poco más fácil trabajar con ella.

Pasamos los datos a la función hist() y configuramos el argumento bins. Acepta una lista, que puede configurar manualmente, si lo desea, especialmente si desea una distribución de contenedores no uniforme.

Como nos gustaría agrupar estas entradas cada una en el mismo lapso de tiempo (1 año), crearemos una matriz Numpy, que comienza con el valor más bajo (min(data)), termina en el más alto value (max(data)) y va en incrementos de 1.

Esta vez, ejecutar este código da como resultado:

change histogram bin size in matplolib

En lugar de una lista, puede dar un solo valor de bins. Este será el número total de contenedores en el gráfico. El uso de 1 dará como resultado 1 barra para todo el gráfico.

Digamos, queremos tener 20 contenedores, usaríamos:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.read_csv('netflix_titles.csv')
data = df['release_year']

plt.hist(data, bins = 20)

plt.show()

Esto da como resultado 20 contenedores iguales, con datos dentro de esos contenedores agrupados y visualizados en sus respectivas barras:

change hisogram bin size uniformly in matplotlib

Esto da como resultado intervalos de 5 años, considerando que tenemos ~100 años de datos. Dividirlo en 20 contenedores significa que cada uno incluirá 5 años de datos.

Trazar histograma con densidad

A veces, en lugar del recuento de las funciones, nos gustaría comprobar cuál es la densidad de cada barra/contenedor. Es decir, qué tan común es ver un rango dentro de un conjunto de datos determinado. Dado que estamos trabajando con intervalos de 1 año, esto dará como resultado la probabilidad de que una película/programa se estrene en ese año.

Para hacer esto, simplemente podemos establecer el argumento density en True:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.read_csv('netflix_titles.csv')
data = df['release_year']
bins = np.arange(min(data), max(data) + 1, 1)

plt.hist(data, bins = bins, density = True)
plt.ylabel('Density')
plt.xlabel('Year')

plt.show()

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

histogram plot with density matplotlib

Podemos ver que ~18% de las entradas se publicaron en 2018, seguido de ~14% en 2019.

Personalización de gráficos de histogramas en Matplotlib

Aparte de estas configuraciones, hay una plétora de varios argumentos que puede configurar para personalizar y cambiar la forma en que se ve su trama. Cambiemos algunas de las opciones comunes con las que a la gente le gusta jugar para cambiar las tramas a su gusto:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

df = pd.read_csv('netflix_titles.csv')
data = df['release_year']
bins = np.arange(min(data), max(data) + 1, 1)

plt.hist(data, bins = bins, density = True, histtype = 'step', alpha = 0.5, align = 'right', orientation = 'horizontal', log = True)

plt.show()

Aquí, hemos establecido varios argumentos:

  • bins - Número de contenedores en la parcela
  • densidad: si PyPlot usa conteo o densidad para completar el gráfico
  • histtype - El tipo de gráfico de histograma (el valor predeterminado es bar, aunque están disponibles otros valores como step o stepfilled)
  • alpha - El alfa/transparencia de las líneas
  • align - A qué lado de los contenedores están alineadas las barras, por defecto es mid
  • orientación - Orientación horizontal/vertical, por defecto es vertical
  • log - Si la trama se debe poner en una escala logarítmica o no

Esto ahora resulta en:

customize matplotlib histogram

Dado que hemos puesto align a right, podemos ver que la barra está un poco desplazada, a la derecha vertical del contenedor 2020.

Conclusión

En este tutorial, hemos repasado varias formas de trazar un diagrama de histograma usando Matplotlib 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.