Cómo hacer un diagrama de caja y bigote en Python

Tutorial para crear y personalizar gráficos de caja y bigotes (boxplot) y cómo interpretarlo.

Diagrama con los elementos de señalados
Diagrama de caja y bigotes

Este post viene código en python para hacer y personalizar uno de los gráficos más potentes y simples que existen. Puedes replicar todo lo que viene aquí en una notebook en  

📸
Serie de Ciencia de Datos con Python
* Guía para comenzar con python
* Guía de estadística con Python
* Visualización con Python (Este post)
* Guía de regresión lineal con Python (próximamente)

¿Qué son los diagrama de caja y bigote?

Son una forma gráfica y estandarizada de mostrar la distribución de los datos basado en 5 números clave:

  1. Media (Q2). Es el valor medio de nuestra información.
  2. Mínimo y máximo. Estos generan las patitas en los extremos del gráfico.
  3. Primer y Tercer cuartil (Percentil 25 y 75, respectivamente).

En ocasiones el gráfico mostrará algunos puntos adicionales, que se consideran los valores atípicos (outliers). El siguiente gráfico te puede ayudar a identificar estos elementos.

¿Para qué se usan?

Los gráficos de caja y bigotes se usan para

  • Identificar valores atípicos y anomalías en los datos.
  • Encontrar sesgos en los datos
  • Entender de un vistazo los rangos que ocupa la información y cómo se distribuye.

Se pueden crear gráficos con varios diagramas de caja y bigotes. Estos ayudan a realizar una comparación de los datos y su distribución y compararlos por clasificación.

Cómo hacer un gráfico de caja y bigotes en Python

Comencemos por la creación de dos conjuntos de datos. Para tener certeza de antemano de la forma en la que se distribuyen los datos, usaremos una simulación.

El siguiente bloque de código crea dos arreglos de datos distribuidos normalmente alrededor de cero. Para diferenciarlos, les sumamos y restamos una unidad.

import numpy as np
np.random.seed(1)

b1 = np.random.randn(100) - 1
b2 = np.random.randn(100) + 1

Listo. Ahora podemos visualizar los gráficos que generamos. Usaremos el módulo maplotlib.pyplot para esto. Veamos cómo se ve una de las variables.

import matplotlib.pyplot as plt

plt.boxplot(x = b1, vert = False)
Un diagrama de caja y bigotes
El diagrama horizontal

Veamos el gráfico que generó y comparemos con lo que sabemos que hace el diagrama según la definición anterior. Primero, obtengamos la media, representada en la línea roja del centro.

print(np.median(b1))
# -0.9359260884377059

Como definimos la variable b1, esperaríamos que la mediana estaría cercana a -1. Entre más grande sea la simulación, este número se debería acercar aún más.

¡Genial! Te has registrado exitosamente.

¡Bienvenido de vuelta! Has iniciado sesión correctamente.

Te has suscrito correctamente a Escribe tu primer paper de Economía.

¡Éxito! Revisa tu correo electrónico para obtener el enlace mágico para iniciar sesión.

¡Éxito! Se ha actualizado la información de facturación.

No se actualizó tu información de facturación.

Sígueme en Mastodon