Un gráfico para la reunión del lunes
La gerente pide un gráfico para la reunión: «¿Los días de sol nos dan mucho más trabajo que los de lluvia?». Un compañero le enseña unas barras. La de sol parece doce veces más alta.
Los números dicen otra cosa. El gráfico no miente en los datos, miente en el eje. Hoy aprendes a elegir el gráfico y a leerlo.
Al final de esta lección
Nota
Puedo elegir un gráfico que responde a una pregunta.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Gráfico de barras | una barra por grupo; su altura es el valor | |
| Gráfico de líneas | puntos unidos en orden, casi siempre en el tiempo | |
| Histograma | cuántos valores caen en cada tramo de igual ancho | |
| Diagrama de dispersión | un punto por fila, con dos números como posición | |
| Tramo | un intervalo de valores de un histograma (bin en inglés) | 250 a 299 |
| Eje | la escala de un lado del gráfico |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La pregunta decide el gráfico
Antes de dibujar, escribe la pregunta. ¿Comparas grupos? Usa barras. ¿Sigues algo en el tiempo? Usa una línea, porque los meses tienen orden.
¿Quieres ver cómo se reparten los valores de una sola columna? Usa un histograma. ¿Buscas la relación entre dos números? Usa un diagrama de dispersión.
Ejemplo resuelto: cuatro preguntas, cuatro gráficos
| Pregunta | Gráfico | Qué columnas |
|---|---|---|
| ¿Qué día de la semana hay más trabajo? | Barras | weekday y la media de hires |
| ¿Cómo cambia el trabajo a lo largo del año? | Línea | month y la media de hires |
| ¿Cuántos días son tranquilos y cuántos movidos? | Histograma | hires sola |
| ¿La lluvia quita clientes? | Dispersión | rain_mm y hires |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Media de alquileres por mes
docker exec jupyter python3 steps/months.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Escribe esto en tu cuaderno: barras por día
import pandas as pd
hires = pd.read_csv("hires.csv")
order = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
by_day = hires.groupby("weekday")["hires"].mean().reindex(order)
# Barras, porque cada día de la semana es un grupo.
by_day.plot.bar(title="Media de alquileres por día")
Un histograma cuenta valores en tramos
Un histograma corta la escala en tramos del mismo ancho y cuenta cuántos valores caen en cada uno. Con un ancho de 50, el tramo 250 a 299 recoge todos los días con esos alquileres.
Para saber el tramo de un valor, haz la división entera valor // ancho. Así, 273 // 50 da 5, el sexto tramo, porque se empieza a contar en 0.
Cuenta los días por tramos
docker exec jupyter python3 steps/hist.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Tramos a mano
# Reparte los alquileres de cada día en tramos de 100.
days = [41, 95, 150, 260, 275, 299, 300, 487]
width = 100
counts = [0, 0, 0, 0, 0]
for one in days:
place = one // width
counts[place] = counts[place] + 1
print(counts)
# Cambia width a 50 y counts a diez ceros.
# ¿Qué tramo queda más lleno?
Escribe esto en tu cuaderno: lluvia y alquileres
# Dos números por día: un punto por día.
hires.plot.scatter(x="rain_mm", y="hires", alpha=0.5)
El eje de unas barras empieza en cero
En unas barras, el ojo lee la longitud. Si el eje empieza en 220, una barra de 312 parece doce veces más larga que una de 228. En realidad es solo un 37 % mayor.
axis.py dibuja el mismo gráfico de dos maneras y calcula las dos proporciones. Abre axis.png desde la lista de archivos de JupyterLab y compara las dos mitades.
Dibuja un gráfico de dos maneras
docker exec jupyter python3 steps/axis.pySe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error muy común
Advertencia
Mucha gente cree que el eje puede empezar donde quede mejor. En unas barras no: su longitud se lee como el valor, así que el eje empieza en 0. Una línea puede empezar más arriba, porque allí se lee la forma y no la longitud. Si lo haces, dilo en el título.
Para ir más lejos: el diagrama de caja
Unas barras de medias esconden cómo se reparten los días. Un diagrama de caja enseña la mediana y la dispersión de cada grupo.
En tu cuaderno, escribe hires.boxplot(column="hires", by="weather"). ¿Qué grupo tiene la caja más alta? ¿Se solapan las cajas de sol y de lluvia? Escribe una frase para la gerente con lo que muestra.