GroupBy y agregación
df.groupby(), agg(), transform(), apply() y agregaciones con nombre mediante Named Aggregation.
GroupBy y agregación es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
La idea de dividir-aplicar-combinar
GroupBy sigue el patrón dividir-aplicar-combinar: divide las filas en grupos según una clave, aplica una función a cada grupo y después combina los resultados en un solo DataFrame. Es la base de la mayoría de los resúmenes analíticos.
import pandas as pd
df = pd.DataFrame({
"dept": ["A", "A", "B", "B", "B"],
"salary": [50, 70, 40, 60, 80],
})groupby básico
df.groupby("col") crea un objeto agrupado. Encadenar una agregación como .mean() calcula un valor por grupo.
print(df.groupby("dept")["salary"].mean())
# dept
# A 60.0
# B 60.0Varias agregaciones
Llame a varias reducciones a la vez con .agg([...]) para producir una columna por función.
print(df.groupby("dept")["salary"].agg(["mean", "min", "max", "count"]))Diccionario de agregación por columna
Pase un diccionario a .agg para aplicar funciones diferentes a columnas diferentes.
df["bonus"] = [5, 7, 4, 6, 8]
out = df.groupby("dept").agg({"salary": "mean", "bonus": "sum"})
print(out)Agregación con nombre
La agregación con nombre proporciona nombres claros a las columnas de salida mediante la sintaxis de pd.NamedAgg. Esto evita encabezados de columnas confusos de varios niveles.
out = df.groupby("dept").agg(
avg_salary=("salary", "mean"),
total_bonus=("bonus", "sum"),
)
print(out)Agrupación por varias claves
Pase una lista de columnas para agrupar según varias claves a la vez y producir un resultado jerárquico (MultiIndex).
df["level"] = ["jr", "sr", "jr", "sr", "sr"]
print(df.groupby(["dept", "level"])["salary"].mean())transform: salida con la misma forma
.transform() devuelve un resultado alineado con las filas ORIGINALES, no una fila por grupo. Es perfecto para añadir una estadística del grupo como una columna nueva.
df["dept_avg"] = df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "dept_avg"]])transform para normalización
Como transform propaga el resultado de vuelta a cada fila, puede normalizar los datos dentro de los grupos; por ejemplo, restando la media del grupo.
df["centered"] = df["salary"] - df.groupby("dept")["salary"].transform("mean")
print(df[["dept", "salary", "centered"]])apply para lógica personalizada
.apply() pasa cada grupo (como un sub-DataFrame) a su función. Úselo para lógicas que las agregaciones integradas no pueden expresar, como devolver las N filas superiores de cada grupo.
top = df.groupby("dept").apply(lambda g: g.nlargest(1, "salary"))
print(top[["dept", "salary"]])agg frente a transform frente a apply
agg reduce cada grupo a un valor. transform devuelve un valor por cada fila original. apply es la opción flexible (pero más lenta) para cualquier caso. Elija la opción más específica para obtener claridad y velocidad.
Desagrupación con reset_index
Los resultados de GroupBy colocan las claves en el índice. Llame a .reset_index() para convertirlas de nuevo en columnas normales, que es lo que espera la mayoría del código posterior.
flat = df.groupby("dept")["salary"].mean().reset_index()
print(flat)
# dept salary
# 0 A 60.0
# 1 B 60.0Comprobación rápida
Ponga a prueba sus conocimientos de groupby.
Resumen
Conceptos esenciales de GroupBy:
- Dividir-aplicar-combinar mediante
df.groupby("col") .agg([...])y las agregaciones mediante diccionarios o con nombre para obtener varias estadísticas.transform()devuelve resultados con la forma original.apply()para lógica arbitraria por grupo- Use siempre
.reset_index()para volver a convertir las claves de grupo en columnas
Preguntas frecuentes
¿La lección «GroupBy y agregación» es gratis?
Sí — el texto completo de «GroupBy y agregación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «GroupBy y agregación»?
df.groupby(), agg(), transform(), apply() y agregaciones con nombre mediante Named Aggregation. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «GroupBy y agregación»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- GroupBy y agregación
- Tablas dinámicas y tabulación cruzada
- Fusión y combinación avanzadas
- Series temporales en Pandas