> lección 25/34 · 16 min

groupby: resumir por grupo

Concepto

"¿Cuánto vendió cada región?" es una pregunta por grupo: separar las filas según una columna, calcular algo en cada grupo y juntar los resultados. Es lo que en Excel haces con una tabla dinámica y en SQL con GROUP BY. En pandas, groupby.

Sintaxis
df.groupby("columna_grupo")["columna_valor"].sum()

Se lee en tres partes. Agrupa por categoría, toma la columna cantidad y suma en cada grupo.

ventas.groupby("categoria")["cantidad"].sum()

El resultado es una Series: el índice son las categorías (ordenadas alfabéticamente) y los valores son los totales.

Otras funciones. En lugar de sum puedes usar mean, count, max o min. count cuenta filas con dato en esa columna: cuántas respuestas tuvo cada canal.

encuesta.groupby("canal")["calificacion"].mean()
encuesta.groupby("canal")["respondent_id"].count()

Leer un grupo. Como los canales quedaron en el índice, un grupo se lee por su etiqueta.

nota_por_canal = encuesta.groupby("canal")["calificacion"].mean()
nota_por_canal["app"]

El grupo ganador. idxmax() devuelve la etiqueta del valor más alto (y idxmin(), la del más bajo). max() daría la nota; idxmax() dice de qué canal es.

nota_por_canal.idxmin()   # el canal con la nota promedio más baja

> tarea Python

Con ventas ya cargada: guarda en por_region el monto total vendido por cada región. Después guarda en total_norte el total de la región norte y en region_top el nombre de la región que más vendió, sin escribirlo a mano.

Cargando Python… la primera vez puede tardar unos segundos.

Primero intenta: las pistas aparecen después de 2 intentos con un resultado incorrecto (los errores de código no cuentan). Llevas 0.

Aprueba las tareas de esta lección para ver el cierre.