1. Fundamentos de la construcción de histogramas
Si alguna vez has mirado una mesa de buffet intentando decidir qué tipo de snacks predominan, ya entiendes algo sobre la distribución de datos. En programación usamos histogramas para identificar patrones en los datos que, a simple vista, podrían no ser obvios. Los histogramas ayudan a analizar visualmente cómo se distribuyen los datos en ciertas categorías o rangos numéricos. ¡Vamos a empezar!
¿Qué es un histograma?
Un histograma es un tipo de gráfico que ayuda a visualizar la distribución de datos en intervalos específicos o "bins" (a veces llamados "cestas" o "cubos"). Por ejemplo, si queremos saber cuántas veces los estudiantes obtuvieron una cierta cantidad de puntos en un examen, un histograma es la mejor manera de mostrarlo.
Parámetros principales de un histograma
Un histograma se construye a partir de barras (bins), donde cada barra muestra cuántos valores caen dentro del intervalo correspondiente. Los parámetros clave de un histograma son:
- Bins (
bins
): número de intervalos en los que se divide el rango de datos. - Color y borde (
color
yedgecolor
): determinan el estilo visual de las barras. - Rango (
range
): establece los valores mínimos y máximos que se mostrarán. - Densidad (
density
): si se establece enTrue
, el histograma será normalizado para que el área total de las barras sea igual a uno.
Uso de la función hist()
para construir histogramas
La biblioteca Matplotlib tiene una función estupenda llamada hist()
, que facilita la creación de histogramas. Vamos a ver un ejemplo simple:
import matplotlib.pyplot as plt
import numpy as np
# Creamos un conjunto de datos
data = np.random.normal(0, 1, 1000)
# Creamos el histograma
plt.hist(data, bins=30, alpha=0.7, color='blue')
plt.title('Histograma de distribución de datos')
plt.xlabel('Valores')
plt.ylabel('Frecuencia')
plt.show()
Aquí generamos un conjunto de datos usando la función np.random.normal()
, que crea una distribución normal. Dividimos los datos en 30 bins y ajustamos la transparencia de las barras con el parámetro alpha
para mejorar la visualización.
2. Configuración de bins y estilo del gráfico
Definición de cantidad y tamaño de bins
El número y el tamaño de los bins pueden influir mucho en la interpretación del histograma. Bins demasiado grandes pueden ocultar detalles importantes, mientras que bins demasiado pequeños pueden hacer que el histograma sea caótico y difícil de entender.
Ejemplo práctico:
# Cambiando la cantidad y tamaño de bins
plt.hist(data, bins=10, color='green', edgecolor='black')
plt.title('Histograma con 10 bins')
plt.xlabel('Valores')
plt.ylabel('Frecuencia')
plt.show()
plt.hist(data, bins=50, color='red', edgecolor='black')
plt.title('Histograma con 50 bins')
plt.xlabel('Valores')
plt.ylabel('Frecuencia')
plt.show()
Observa cómo cambia el aspecto del histograma al usar 10 y 50 bins. ¿Ves la diferencia? ¡Este es un caso donde el tamaño importa!
Ejemplos prácticos de configuración de parámetros del histograma
Los histogramas se pueden ajustar no solo en cuanto a la cantidad de bins, sino también en aspectos como color, transparencia e incluso estilo de las barras. Aquí tienes más ejemplos:
# Otros parámetros de configuración
plt.hist(data, bins=30, density=True, color='purple', edgecolor='white', linestyle='dashed')
plt.title('Histograma de densidad con estilo modificado')
plt.xlabel('Valores')
plt.ylabel('Densidad')
plt.grid(True)
plt.show()
En este ejemplo añadimos el parámetro density=True
, que normaliza el histograma de manera que el área bajo el gráfico sea igual a 1. Esto puede ser útil cuando quieres analizar la densidad de probabilidad de la distribución.
3. Ejemplos del uso de histogramas
Los histogramas se usan en diferentes campos, desde análisis de datos financieros hasta experimentos en física. Veamos cómo usar un histograma con un conjunto de datos real.
Construcción de histograma con un conjunto de datos real
Imagina que tenemos un conjunto de datos que representa la temperatura diaria promedio durante un año. Queremos analizar con qué frecuencia la temperatura se encuentra en ciertos rangos.
# Conjunto de datos de temperaturas (simplificado para el ejemplo)
temperatures = [15, 16, 15, 14, 19, 22, 24, 25, 17, 18, 15, 16, 23, 24, 21, 19, 18, 20, 22, 25, 26, 27]
# Construcción del histograma
plt.hist(temperatures, bins=5, color='navy', edgecolor='black')
plt.title('Histograma de temperaturas')
plt.xlabel('Temperatura (°C)')
plt.ylabel('Frecuencia')
plt.show()
En este ejemplo usamos 5 bins para identificar cómo se distribuyen los valores. El histograma muestra que la mayoría de las temperaturas están en el rango de 15 a 20°C.
Comparación de distribuciones en un mismo histograma
A veces, necesitas comparar la distribución de varios conjuntos de datos en un mismo histograma. En Matplotlib, puedes superponer varios histogramas usando el parámetro alpha
(transparencia).
Ejemplo 3: Comparación de distribuciones
import matplotlib.pyplot as plt
# Generación de datos
data1 = [5, 10, 10, 15, 15, 20, 25, 30, 30, 35, 40]
data2 = [5, 7, 9, 10, 11, 13, 15, 17, 19, 20, 25]
# Construcción de histogramas superpuestos
plt.hist(data1, bins=5, color="blue", alpha=0.5, label="Conjunto 1")
plt.hist(data2, bins=5, color="green", alpha=0.5, label="Conjunto 2")
plt.xlabel("Valores")
plt.ylabel("Frecuencia")
plt.title("Comparación de dos distribuciones")
plt.legend()
plt.show()
En este ejemplo usamos el parámetro alpha=0.5
para cada histograma, lo que hace que las barras sean semitransparentes y permita comparar visualmente las intersecciones entre las distribuciones.
Consejos útiles para trabajar con histogramas
- Elección óptima del número de bins: Elige la cantidad de bins según el tamaño y la naturaleza de los datos. Un número demasiado pequeño o demasiado grande de bins puede distorsionar la distribución.
- Comparación de distribuciones: Usa la transparencia (
alpha
) para superponer varios histogramas y comparar distribuciones. - Adición de rejillas: Las rejillas ayudan a interpretar mejor los datos. Puedes añadirlas con la función
plt.grid(True)
. - Parámetro
density
: Usadensity=True
para mostrar los datos como densidad de probabilidad, lo cual es especialmente útil al comparar distribuciones.
GO TO FULL VERSION