Gr谩fico de histograma de Matplotlib: tutorial y ejemplos

    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.

    .

    Etiquetas:

    Deja una respuesta

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