Creación y personalización de histogramas y boxplots con Matplotlib

Clase 26 de 32Curso de Python para Ciencia de Datos

Contenido del curso

NumPy

Pandas

Resumen

Cuando trabajas con datos numéricos, comprender cómo se distribuyen y dónde se concentran es fundamental antes de cualquier análisis profundo. Los histogramas y los box plots (diagramas de cajas) son las herramientas visuales más utilizadas en el análisis exploratorio de datos porque permiten identificar patrones, dispersión y posibles anomalías de forma inmediata. A continuación verás cómo crearlos y personalizarlos paso a paso con Matplotlib y NumPy.

¿Cómo crear un histograma con datos de distribución normal?

Un histograma es un tipo de gráfico de barras que muestra la frecuencia con la que los datos caen dentro de intervalos específicos. Para construir uno, primero necesitas un conjunto de datos. En este caso se genera un array aleatorio con np.random.normal(), que recibe tres parámetros [01:10]:

  • Media: el valor central de la distribución (por ejemplo, 170 para alturas en centímetros).
  • Desviación estándar: qué tanto se separan los datos de la media (10 en el ejemplo).
  • Cantidad de datos: el tamaño de la muestra (200 datos generados).

Una vez que tienes el array, graficas con plt.hist() pasando los datos y opciones de personalización como color='salmon', edgecolor='black' y el parámetro alfa [03:45]. Este último controla la transparencia del gráfico y acepta valores entre 0 y 1: un valor de 0.6 ofrece buena legibilidad, mientras que 0.1 hace las barras casi invisibles y 1 elimina toda transparencia.

¿Cómo modificar los intervalos de un histograma?

Por defecto, Matplotlib divide los datos en diez intervalos (bins). Puedes cambiar esta cantidad con el parámetro bins dentro de plt.hist() [04:50]. Si colocas bins=5, obtienes barras más anchas y agrupaciones más generales; si aumentas el número, la distribución se detalla mucho más. La elección depende de lo que quieras resaltar en tus datos.

Recuerda siempre agregar plt.title(), plt.xlabel() y plt.ylabel() para que el gráfico comunique con claridad qué representa cada eje.

¿Por qué los datos aleatorios cambian en cada ejecución?

Cada vez que ejecutas np.random.normal(), NumPy genera valores distintos porque la generación es aleatoria [02:20]. Esto significa que tu histograma se verá diferente en cada ejecución. Para evitarlo y garantizar reproducibilidad, más adelante se introduce el concepto de semilla con np.random.seed(0) [06:15], que fija el punto de inicio del generador aleatorio y asegura que los mismos números aparezcan siempre.

¿Qué es un box plot y cómo interpretarlo?

Un box plot o diagrama de cajas resume la distribución de datos a través de sus cuartiles [05:30]. Permite visualizar de un vistazo:

  • La mediana (línea central de la caja).
  • La dispersión (tamaño de la caja y los bigotes).
  • Los valores atípicos (puntos fuera de los bigotes).

Para el ejemplo se crean tres grupos de edades con distribución normal y medias de 30, 40 y 35 años respectivamente, cada uno con desviación estándar de 5 y cien datos [07:00].

¿Cómo personalizar un box plot en Matplotlib?

La función plt.boxplot() recibe los datos y varios parámetros útiles [08:10]:

  • patch_artist=True: rellena las cajas con color en lugar de dejarlas vacías.
  • notch=True: añade un recorte en forma de muesca que representa el intervalo de confianza alrededor de la mediana. Si lo cambias a False, las cajas quedan completamente cuadradas [09:25].
  • vert=True/False: define si la orientación es vertical u horizontal. Al cambiar la orientación, asegúrate de que las etiquetas de los ejes sigan siendo coherentes.
  • labels: permite asignar nombres a cada grupo, como "Grupo 1", "Grupo 2" y "Grupo 3".

Al igual que con los histogramas, siempre es recomendable incluir título y etiquetas en los ejes para que cualquier persona entienda la representación sin necesidad de explicaciones adicionales.

¿Qué tipo de datos necesitas para cada gráfico?

Tanto el histograma como el box plot trabajan con datos numéricos continuos que siguen alguna distribución. El histograma muestra la frecuencia de los valores dentro de rangos, mientras que el box plot resume estadísticas de posición y dispersión. Ambos son complementarios: el primero te muestra la forma de la distribución y el segundo destaca medianas, cuartiles y valores atípicos de manera compacta.

¿Sabías que existen diferencias importantes en la interpretación de cada uno según el tipo de distribución de tus datos? Comparte tu respuesta en los comentarios.