Filtrado, groupby y agregación

Mapa conceptual
- Python para Datos
- Entorno
- pip
- venv
- Reproducibilidad
- Funcional
- Comprensiones
- Lambda
- map filter
- Calidad
- try except
- pytest
- Asserts
- NumPy
- Arrays
- Broadcasting
- Indexacion
- Pandas
- DataFrame
- Groupby
- Merge Join
- Entorno
Filtrar filas
Filtrar es quedarse con las filas que cumplen una condición, usando máscaras booleanas como en NumPy: df[df.ventas 100]. Se combinan condiciones con y y y paréntesis. También existe df.query(ventas 100), más legible para expresiones largas.
Seleccionar columnas
Antes o después de filtrar, eliges columnas: df[[region, ventas]] te trae solo lo necesario. Filtrar filas y seleccionar columnas suele ser el primer paso de cualquier análisis puntual.
La idea de groupby
Imagina agrupar las ventas por región: todas las filas de una misma región forman un grupo. df.groupby(region) crea el objeto de grupo; sobre él llamas a una función de resumen y Pandas la aplica a cada grupo por separado, devolviendo una fila de resultados por grupo.
Split-apply-combine
- Split: parte el DataFrame en grupos según una o varias columnas clave.
- Apply: ejecuta una función de resumen sobre cada grupo de forma independiente.
- Combine: vuelve a juntar los resultados en un nuevo DataFrame indexado por grupo.
Funciones de agregación
Las más comunes son sum, mean, count, min, max y std. df.groupby(region)[ventas].sum() responde «cuánto vendió cada región» en una línea. Se pueden agregar varias columnas a la vez pidiendo un subconjunto antes de agg.
agg: varias funciones
Con .agg([sum, mean, count]) obtienes varios estadísticos por grupo en una sola pasada, y con un diccionario puedes pedir funciones distintas por columna: ventas: sum, cliente: nunique. Es la forma expresiva de construir tablas resumen.
| Pregunta | Expresión (idea) | Resultado |
|---|---|---|
| Total por región | df.groupby(region)[ventas].sum() | una fila por región |
| Media por dos claves | df.groupby([region, año])... | índice multinivel |
| Recuento distinto | .agg(nunique) | valor único por grupo |
| Varias métricas | .agg([sum, mean]) | una columna por métrica |
¿Qué hace exactamente df.groupby(region)[ventas].mean()?
Filtrar tras agrupar
A veces quieres quedarte con grupos que cumplen algo: .filter(lambda g: len(g) 5) conserva solo los grupos con suficientes filas. Y con .transform aplicas un cálculo de grupo devolviendo el tamaño original, útil para restar la media de cada grupo fila a fila.
Índices multinivel
Al agrupar por varias columnas, el resultado tiene un índice multinivel (varios niveles). .reset_index() lo convierte de nuevo en columnas normales, facilitando exportar o seguir operando.
value_counts
Para contar categorías rápidas sin un groupby completo, value_counts() da la frecuencia de cada valor ordenada de mayor a menor. Es el resumen de una columna categórica en un gesto.
Ordenar resultados
Un resumen casi siempre se ordena para interpretarse: .sort_values(ventas, ascending=False) muestra primero lo importante. Agrupar, agregar y ordenar es la trinidad de las preguntas de negocio.
Errores frecuentes
- Aplicar la agregación a todas las columnas por descuido y obtener resultados sin sentido en las textuales.
- Olvidar reset_index y pelearte con un índice multinivel al exportar.
- Confundir count (no nulos) con nunique (distintos) al contar clientes.
Tras agrupar por varias columnas, reset_index() convierte los niveles del índice de nuevo en columnas.
De la pregunta al código
El valor de groupby es traduce preguntas de lenguaje natural a una línea: «media de notas por materia», «total gastado por cliente». Practicar esa traducción es volverte rápido interrogando datos.
Ordena las etapas del patrón split-apply-combine:
Arrastra cada ficha a su categoría (o tócala y luego toca la categoría). También puedes usar el teclado.
Pandas DocsGuía oficial de groupby y agregación.
Con un DataFrame de transacciones (fecha, cliente, producto, importe), escribe las expresiones para: importe total por cliente, y media de importe por producto y mes. ¿Qué estadístico usarías para saber qué cliente compra artículos más distintos?
Tu texto se guarda sólo en este dispositivo.
Documentacion pandasGuia de referencia para manipulacion de datos en Python.
Comentarios
Inicia sesión para comentar.
Todavía no hay comentarios. Sé la primera persona en opinar.