Skip to content

Pandas Plot Histogram: Crear y personalizar histogramas en Python

Updated on

La visualización de datos es un aspecto crucial del análisis de datos y la biblioteca de Pandas de Python es una herramienta poderosa que nos permite crear visualizaciones perspicaces. Una de estas visualizaciones es un histograma, una representación gráfica de la distribución de un conjunto de datos. En este artículo, exploraremos cómo trazar un histograma usando pandas, personalizar bins, trazar múltiples columnas y mucho más. También abordaremos algunas preguntas frecuentes y proporcionaremos ejemplos para ayudarle a comprender mejor el proceso.

Los histogramas son particularmente útiles cuando se trabaja con conjuntos de datos grandes, ya que pueden proporcionar un resumen visual de los datos. Nos pueden ayudar a comprender la distribución de frecuencias subyacente de un conjunto de datos continuos o discretos. Esto puede ser particularmente útil cuando se trata de datos como grupos de edad, donde comprender la distribución puede proporcionar ideas valiosas.

¿Quieres crear rápidamente visualizaciones de datos a partir de un dataframe de Python Pandas sin código?

PyGWalker es una biblioteca de Python para el análisis exploratorio de datos con visualización. PyGWalker (opens in a new tab) puede simplificar tu flujo de trabajo de análisis y visualización de datos en Jupyter Notebook, convirtiendo tu dataframe de pandas (y dataframe de polars) en una interfaz de usuario de estilo Tableau para la exploración visual.

PyGWalker para visualización de datos (opens in a new tab)

Creando un histograma en Pandas

Crear un histograma en pandas es sencillo gracias a la función hist(). Esta función proporciona una forma rápida de visualizar la distribución de datos en un DataFrame o Series de pandas. Aquí tienes un ejemplo básico de cómo crear un histograma:

import pandas as pd
import matplotlib.pyplot as plt
 
# Crear un dataframe simple
data = {'valores': [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]}
df = pd.DataFrame(data)
 
# Trazar un histograma
df['valores'].hist()
plt.show()

En este ejemplo, primero importamos las bibliotecas necesarias, pandas y matplotlib. Luego creamos un DataFrame simple de pandas y usamos la función hist() para trazar un histograma de la columna 'valores'. La función plt.show() se usa para mostrar el gráfico.

Personalización de bins en un histograma de Pandas

La función hist() en pandas usa un número predeterminado de bins, que es 10. Sin embargo, puedes personalizar el número de bins según tus necesidades. El parámetro bins en la función hist() se utiliza para especificar el número de bins que deseas en tu histograma.

Por ejemplo, si quieres aumentar el número de bins a 20, puedes hacerlo de la siguiente manera:

df['valores'].hist(bins=20)
plt.show()

La personalización de bins en un histograma de pandas puede ayudarte a obtener una vista más detallada de la distribución de los datos. Sin embargo, es importante elegir un número adecuado de bins. Demasiados bins pueden resultar en un ajuste excesivo, donde el histograma representa los datos demasiado de cerca y puede perder la "imagen general". Por otro lado, muy pocos bins pueden simplificar demasiado los datos, lo que hace difícil discernir cualquier patrón útil.

Trazar un histograma con múltiples columnas en Pandas

Pandas también te permite trazar un histograma con múltiples columnas. Esto puede ser particularmente útil cuando quieres comparar la distribución de dos variables diferentes. Para trazar un histograma con múltiples columnas, simplemente necesitas pasar las columnas a la función hist().

Aquí tienes un ejemplo de cómo trazar un histograma con múltiples columnas:

# Crear un dataframe con dos columnas
data = {'valores1': [1, 2, 2, 3, 3, 3, 4, 4, 4, 4],
        'valores2': [1, 1, 2, 2, 3, 3, 3, 4, 4, 4]}
df = pd.DataFrame(data)
 
# Trazar un histograma con múltiples columnas
df.hist(bins=20, alpha=0.5)
plt.show()

En este ejemplo, creamos un DataFrame con dos columnas, 'valores1' y 'valores2'. Luego, llamamos a la función hist() en el DataFrame, lo que traza un histograma para cada columna. El parámetro alpha se utiliza para establecer la transparencia de los histogramas, lo que facilita compararlos.

Trazar un histograma por grupo en Pandas

Otra característica poderosa de pandas es la capacidad de trazar un histograma por grupo. Esto puede ser particularmente útil cuando quieres comparar la distribución de una variable en diferentes grupos.

Por ejemplo, supongamos que tenemos un DataFrame que contiene las edades de personas en diferentes profesiones. Podemos trazar un histograma de edades por profesión de la siguiente manera:

# Crear un dataframe con edad y profesión
data = {'edad': [23, 25, 22, 30, 32, 40, 35, 24, 28, 35],
        'profesión': ['ingeniero', 'médico', 'ingeniero', 'médico', 'ingeniero', 'médico', 'ingeniero', 'médico', 'ingeniero', 'médico']}
df = pd.DataFrame(data)
 
# Trazar un histograma por grupo
df.groupby('profesión')['edad'].hist(alpha=0.6)
plt.legend(['Ingeniero', 'Médico'])
plt.show()

En este ejemplo, primero creamos un DataFrame con las columnas 'edad' y 'profesión'. Luego agrupamos el DataFrame por 'profesión' y llamamos a la función hist() en la columna 'edad'. Esto resulta en un histograma de edades para cada profesión. El parámetro alpha se utiliza para establecer la transparencia de los histogramas y la función legend() se utiliza para agregar una leyenda al gráfico.

Trazar un histograma normalizado en Pandas

A veces, es útil trazar un histograma normalizado para representar la distribución de datos como proporciones en lugar de recuentos. Esto se puede lograr en pandas estableciendo el parámetro density en True en la función hist().

Aquí tienes un ejemplo de cómo trazar un histograma normalizado:

# Trazar un histograma normalizado
df['valores1'].hist(density=True)

plt.show()


En este ejemplo, el argumento `density=True` asegura que el área debajo del histograma sume 1, dándonos así una función de densidad de probabilidad.

## Creando subgráficos con el histograma de Pandas

Pandas también te permite crear subgráficos al trazar histogramas. Esto puede ser particularmente útil cuando quieres comparar las distribuciones de múltiples variables lado a lado. Para crear subgráficos, puedes usar el argumento `subplots=True` en la función `hist()`.

Aquí tienes un ejemplo:

```python
# Crear subgráficos
df.hist(bins=20, alpha=0.5, subplots=True, layout=(1,2))
plt.show()

En este ejemplo, creamos dos subgráficos en una sola fila para las columnas 'values1' y 'values2'. El parámetro layout se utiliza para especificar la disposición de los subgráficos.

Agregar barras de error a un histograma de Pandas

Agregar barras de error a un histograma puede proporcionar una representación visual de la variabilidad o incertidumbre en los datos. Aunque pandas no admite directamente la adición de barras de error a los histogramas, esto se puede lograr usando la biblioteca matplotlib.

Aquí tienes un ejemplo:

import numpy as np
 
# Calcular la media y la desviación estándar
mean = df['values1'].mean()
std = df['values1'].std()
 
# Trazar histograma con barras de error
plt.hist(df['values1'], bins=20, alpha=0.5)
plt.errorbar(mean, 5, xerr=std, fmt='o')
plt.show()

En este ejemplo, primero calculamos la media y la desviación estándar de la columna 'values1'. Luego trazamos el histograma y agregamos una barra de error en la posición de la media. Se utiliza la función errorbar() de matplotlib para agregar la barra de error.

Conclusión

Los histogramas son una herramienta poderosa para la visualización de datos, y la biblioteca pandas en Python proporciona una función versátil para crear y personalizar histogramas. Ya sea que estés trazando un histograma simple, personalizando los bins, trazando múltiples columnas o creando subgráficos, pandas te cubre. Recuerda que la clave de una visualización de datos efectiva no solo está en crear gráficos inteligentes, sino también en personalizarlos para adaptarlos a tus necesidades específicas.

Preguntas frecuentes

  1. ¿Cómo puedo personalizar las marcas del eje x en un histograma de pandas? Puedes personalizar las marcas del eje x utilizando la función xticks() de la biblioteca matplotlib. Por ejemplo, plt.xticks(range(0, 10)) establecerá las marcas del eje x en un rango de 0 a 10.

  2. ¿Cómo puedo trazar un histograma con densidad en pandas? Puedes trazar un histograma con densidad estableciendo el parámetro density en True en la función hist(). Esto trazará un histograma normalizado donde el área debajo del histograma sumará 1.

  3. ¿Cómo puedo agregar una leyenda a mi histograma de pandas? Puedes agregar una leyenda a tu histograma de pandas utilizando la función legend() de la biblioteca matplotlib. Por ejemplo, plt.legend(['Columna1', 'Columna2']) agregará una leyenda con 'Columna1' y 'Columna2'.