lunes, 8 de julio de 2019

Data Science: Visualización básica de un dataset: Boxplot

El boxplot, o diagrama de caja y bigotes, es uno de los más útiles.

Vamos a continuar desde la anterior entrada (Histograma de frecuencias).

Vamos a pintar un boxplot de la columna "Day Calls" con el siguiente comando:

plt.boxplot(data["Day Calls"])
plt.title("Boxplot del número de llamadas al día")
plt.ylabel("Número de llamadas al día")

Vemos el siguiente resultado:


Un gráfico muy bonito, vemos una caja en medio con líneas saliendo de arriba y abajo y unos cuantos puntos al final, pero, ¿qué significa?

El boxplot utiliza los cuantiles de la distribución para construirse. Empecemos por la caja.
La caja está formada por la línea superior, la línea inferior, y la línea central amarilla.
La línea superior de la caja representa el cuantil 75 de la distribución de valores.
La línea inferior de la caja representa el cuantil 25 de la distribución.
La línea central amarilla representa el cuantil 50 de la distribución, es decir, la mediana.
Así pues, lo que nos indica la caja es que en su interior se encuentra el 50% de valores centrales de la distribución. El otro 25% inferior y 25% superior se encuentran en las líneas y puntos.
Las líneas superior e inferior de los "bigotes" representan el resto de la distribución de datos, hasta un máximo de 1,5 veces el rango intercuantílico (diferencia entre el cuantil 75 y el cuantil 25, o, lo que es lo mismo, entre las líneas superior e inferior de la caja).
Si hay datos más allá del límite de los bigotes (como es el caso), estos se representan mediante puntos. A los valores de los puntos, o lo que es lo mismo, valores a más de 1,5 veces el rango intercuantílico, también se les conoce como outlayers (valores fuera de lugar).

Para comprobar los valores exactos de este gráfico, podemos ejecutar los siguientes comandos, que nos mostrarán cada uno de los datos del gráfico que hemos mencionado:

linea_caja_superior = data["Day Calls"].quantile(0.75)
linea_caja_central = data["Day Calls"].quantile(0.5)
linea_caja_inferior = data["Day Calls"].quantile(0.25)
rango_inter_cuantilico = linea_caja_superior - linea_caja_inferior
linea_bigote_superior = linea_caja_superior + 1.5 * rango_inter_cuantilico
linea_bigote_inferior = linea_caja_inferior - 1.5 * rango_inter_cuantilico
print("Línea superior de la caja: " + str(linea_caja_superior))
print("Línea central de la caja: " + str(linea_caja_central))
print("Línea inferior de la caja: " + str(linea_caja_inferior))
print("Longitud vertical total de la caja: " + str(rango_inter_cuantilico))
print("Línea superior del bigote: " + str(linea_bigote_superior))
print("Línea inferior del bigote: " + str(linea_bigote_inferior))

El resultado es el siguiente:


Y eso es todo.

No hay comentarios:

Publicar un comentario