Gráfico de histograma de Matplotlib: tutorial y ejemplos

G

Introducción

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

En este tutorial, veremos cómo trazar un diagrama de histograma en Matplotlib. Los gráficos de histograma 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 más datos caen en ese rango.

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

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

Trazar 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:

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 al hist() función para trazar un histograma para el release_year característica. Por defecto, esto contará el número de ocurrencias de estos años, completará barras en rangos y trazará el histograma.

Ejecutar este código da como resultado:

Aquí, los contenedores de películas (rangos) 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, ~ 5000 se lanzaron entre 2010. y 2020.

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

Cambiar el tamaño del contenedor de 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 los lanzamientos de películas y programas.

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

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 un data variable, solo para que sea un poco más fácil trabajar con él.

Hemos pasado el data al hist() función, y configure el bins argumento. Acepta una lista, que puede configurar manualmente, si lo desea, especialmente si desea una distribución de ubicación no uniforme.

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

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

En lugar de una lista, puede dar una bins valor. Este será el número total de bins en la parcela. Utilizando 1 resultará en 1 barra para toda la parcela.

Digamos, queremos tener 20 contenedores, usaríamos:

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:

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 características, querríamos 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 dado. Dado que estamos trabajando con intervalos de 1 año, esto dará como resultado la probabilidad de que se estrene una película / programa en ese año.

Para hacer esto, simplemente podemos configurar el density argumento para True:

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:

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

Personalización de gráficos de histograma en Matplotlib

Además de estas configuraciones, hay una gran cantidad de varios argumentos que puede configurar para personalizar y cambiar la apariencia de su trama. Cambiemos algunas de las opciones comunes con las que a la gente le gusta jugar para cambiar las parcelas a sus gustos:

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
  • density – Si PyPlot usa recuento o densidad para poblar la trama
  • histtype – El tipo de gráfico de histograma (el valor predeterminado es bar, aunque otros valores como step o stepfilled están disponibles)
  • alpha – El alfa / transparencia de las líneas
  • align – A qué lado de los contenedores están alineadas las barras, el valor predeterminado es mid
  • orientation – Orientación horizontal / vertical, el valor predeterminado es vertical
  • log – Si el gráfico debe colocarse en una escala logarítmica o no

Esto ahora resulta en:

Desde que pusimos el 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 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.

.

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