> lección 26/34 · 16 min

agg: varios resúmenes a la vez

Concepto

Un informe rara vez pide un solo número por grupo: quiere el total, el promedio y la cantidad de ventas de cada categoría, juntos en una tabla. agg calcula varios resúmenes en un solo paso.

Sintaxis
df.groupby("grupo")["columna"].agg(["sum", "mean", "count"])

Varias funciones sobre una columna. Con una lista de nombres de funciones, agg devuelve un DataFrame: una fila por grupo y una columna por función.

notas = encuesta.groupby("canal")["calificacion"].agg(["mean", "min", "count"])

Leer un valor. Con loc, la etiqueta del grupo y el nombre de la columna.

notas.loc["web", "min"]

Columnas con nombre propio. Cuando resumes columnas distintas, o quieres nombres claros para el informe, escribe cada columna nueva como nombre=("columna", "función"). Es la forma más legible y la que más se usa en el trabajo real.

encuesta.groupby("canal").agg(
    respuestas=("respondent_id", "count"),
    nota_promedio=("calificacion", "mean"),
    edad_promedio=("edad", "mean"),
)

Los grupos como columna. Por defecto, los grupos quedan en el índice. Con groupby(..., as_index=False) quedan como una columna normal, lo que sirve cuando después vas a exportar la tabla o combinarla con otra.

> tarea Python

Con ventas ya cargada: guarda en resumen_categoria la suma, el promedio y la cantidad de montos de cada categoría, usando agg con la lista ["sum", "mean", "count"]. Guarda en promedio_hogar el promedio de la categoría hogar. Después crea informe_region, agrupado por región, con dos columnas con nombre: total (la suma de monto) y unidades (la suma de cantidad).

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.