GroupBy, agregación y tablas dinámicas
Resuma datos mediante operaciones groupby y tablas dinámicas.
GroupBy, agregación y tablas dinámicas es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 3 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 Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.
Fundamentos de groupby
df.groupby("col") divide el DataFrame en grupos según los valores únicos de la columna. Encadene una agregación para obtener resultados.
import pandas as pd
df = pd.DataFrame({
"dept":["HR","IT","HR","IT","HR"],
"salary":[60,80,65,90,70]
})
print(df.groupby("dept")["salary"].mean())
# HR 65.0
# IT 85.0Varias funciones de agregación
Use agg() para aplicar varias funciones de agregación a la vez.
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
result = df.groupby("dept")["sal"].agg(["mean","max","count"])
print(result)Agregaciones con nombre
Use argumentos con nombre en agg() para asignar nombres explícitos a las columnas de salida (Pandas 0.25+).
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
result = df.groupby("dept").agg(
avg_sal=("sal","mean"),
max_sal=("sal","max"),
count=("sal","size")
)
print(result)groupby en varias columnas
Pase una lista de columnas para crear grupos jerárquicos.
import pandas as pd
df = pd.DataFrame({
"year":[2023,2023,2024,2024],
"dept":["HR","IT","HR","IT"],
"sal":[60,80,65,90]
})
print(df.groupby(["year","dept"])["sal"].sum())transform()
transform devuelve una Series alineada con el índice original, lo que resulta útil para añadir estadísticas a nivel de grupo al DataFrame original.
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR","IT"],"sal":[60,80,65,90]})
df["dept_avg"] = df.groupby("dept")["sal"].transform("mean")
print(df)filter()
filter(func) conserva solo los grupos para los que la función devuelve True.
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR"],"sal":[60,80,65]})
# Keep only departments with mean salary > 70:
result = df.groupby("dept").filter(lambda g: g["sal"].mean() > 70)
print(result)pivot_table
pd.pivot_table crea un resumen con formato de hoja de cálculo y una agregación personalizada.
import pandas as pd
df = pd.DataFrame({
"year":[2023,2023,2024,2024],
"region":["East","West","East","West"],
"sales":[100,150,120,200]
})
pt = pd.pivot_table(df, values="sales",
index="year", columns="region",
aggfunc="sum")
print(pt)crosstab
pd.crosstab calcula una tabla de contingencia, útil para contar combinaciones de valores categóricos.
import pandas as pd
df = pd.DataFrame({"gender":["M","F","M","F","M"],"result":["pass","pass","fail","fail","pass"]})
print(pd.crosstab(df["gender"], df["result"]))apply()
apply(func) aplica una función personalizada al DataFrame de cada grupo (axis=0) o a cada fila/columna (axis=1).
import pandas as pd
df = pd.DataFrame({"dept":["HR","IT","HR"],"sal":[60,80,65]})
def range_sal(g):
return g["sal"].max() - g["sal"].min()
print(df.groupby("dept").apply(range_sal))unstack para cambiar la forma
Después de un groupby de varios niveles, use unstack() para mover el nivel de índice más interno a las columnas.
import pandas as pd
df = pd.DataFrame({"year":[2023,2023,2024],"dept":["HR","IT","HR"],"sal":[60,80,65]})
result = df.groupby(["year","dept"])["sal"].mean().unstack()
print(result)Resample para series temporales
resample("M") agrupa un DataFrame de series temporales por periodos naturales, lo que permite realizar agregaciones mensuales o anuales.
import pandas as pd
idx = pd.date_range("2024-01-01", periods=90, freq="D")
df = pd.DataFrame({"sales": range(90)}, index=idx)
monthly = df.resample("ME").sum()
print(monthly)Comprobación rápida
¿Qué devuelve groupby().transform("mean")?
Resumen
groupby divide los datos en grupos para agregarlos. Use agg() para varias funciones, transform() para propagar las estadísticas de grupo, filter() para descartar grupos y pivot_table()/crosstab() para resúmenes multidimensionales.
Preguntas frecuentes
¿La lección «GroupBy, agregación y tablas dinámicas» es gratis?
Sí — el texto completo de «GroupBy, agregación y tablas dinámicas» 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 Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.
¿Qué aprenderé en «GroupBy, agregación y tablas dinámicas»?
Resuma datos mediante operaciones groupby y tablas dinámicas. Practicas Python Academy 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 Python Academy?
No se requiere experiencia previa. Python Academy 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 3 de 4.
¿Cuánto tiempo toma la lección «GroupBy, agregación y tablas dinámicas»?
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 Python Academy?
Sí. Cada lección de Python Academy 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
- Fundamentos de Series y DataFrame
- Indexación, filtrado y máscaras booleanas
- GroupBy, agregación y tablas dinámicas
- Fusión, combinación y limpieza de datos