Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Programación orientada a datos con Python, Unidad 9 — Análisis básico de datos en Python puro, 9.2 — Agrupaciones y agregaciones ·

Casos prácticos

Casos prácticos de Agrupaciones y Agregaciones en Python puro

Introducción

Agrupar y hacer agregaciones sobre conjuntos de datos es una habilidad valiosa en la programación orientada a datos. Nos permite resumir grandes volúmenes de información para obtener insights útiles sin necesidad de procesar cada elemento individualmente. En este artículo, exploraremos diferentes formas de agrupar y realizar agregaciones en Python puro, aplicando estos conceptos a casos prácticos.

Explicación principal con ejemplos

Ejemplo 1: Agrupamiento básico

Supongamos que tenemos una lista de registros, donde cada registro es un diccionario con información sobre ventas. Queremos agrupar estas ventas por el mes y calcular la suma total de las ventas en ese mes.

def group_and_sum(sales):
    monthly_sales = {}
    for sale in sales:
        month = sale['month']
        amount = sale['amount']
        
        if month not in monthly_sales:
            monthly_sales[month] = 0
        
        monthly_sales[month] += amount
    
    return monthly_sales

# Ejemplo de uso
sales_data = [
    {'month': 'January', 'amount': 150},
    {'month': 'February', 'amount': 200},
    {'month': 'March', 'amount': 300},
    {'month': 'April', 'amount': 400},
    {'month': 'May', 'amount': 500}
]

monthly_sales = group_and_sum(sales_data)
print(monthly_sales)  # Output: {'January': 150, 'February': 200, 'March': 300, 'April': 400, 'May': 500}

Ejemplo 2: Agregaciones con diccionarios anidados

Ahora, consideremos un caso más complejo donde cada venta tiene detalles adicionales como producto y cantidad. Queremos agrupar las ventas por mes e incluir la cantidad de productos vendidos en ese mes.

def group_and_aggregate(sales):
    monthly_sales = {}
    
    for sale in sales:
        month = sale['month']
        product = sale['product']
        amount = sale['amount']
        
        if month not in monthly_sales:
            monthly_sales[month] = {'total_amount': 0, 'quantity_sold': {}}
        
        monthly_sales[month]['total_amount'] += amount
        
        if product not in monthly_sales[month]['quantity_sold']:
            monthly_sales[month]['quantity_sold'][product] = 0
        
        monthly_sales[month]['quantity_sold'][product] += sale['quantity']
    
    return monthly_sales

# Ejemplo de uso
sales_data = [
    {'month': 'January', 'product': 'Product A', 'amount': 150, 'quantity': 2},
    {'month': 'February', 'product': 'Product B', 'amount': 200, 'quantity': 3},
    {'month': 'March', 'product': 'Product C', 'amount': 300, 'quantity': 4},
    {'month': 'April', 'product': 'Product A', 'amount': 400, 'quantity': 5},
    {'month': 'May', 'product': 'Product B', 'amount': 500, 'quantity': 6}
]

monthly_sales = group_and_aggregate(sales_data)
print(monthly_sales) 
# Output: {
#     'January': {'total_amount': 150, 'quantity_sold': {'Product A': 2}},
#     'February': {'total_amount': 200, 'quantity_sold': {'Product B': 3}},
#     'March': {'total_amount': 300, 'quantity_sold': {'Product C': 4}},
#     'April': {'total_amount': 400, 'quantity_sold': {'Product A': 5}},
#     'May': {'total_amount': 500, 'quantity_sold': {'Product B': 6}}
# }

Errores típicos / trampas

  1. Omitir el manejo de datos faltantes: Cuando se agrupan datos, es fácil olvidar manejar los registros con valores faltantes.
  1. No inicializar correctamente los acumuladores: Si no se inicializan adecuadamente las variables que se usan para sumar o contar, se pueden obtener resultados incorrectos.
  1. Elegir el método de agregación inapropiado: El uso incorrecto del operador de agregación puede dar resultados erróneos. Por ejemplo, usar max cuando debería ser sum.

Checklist accionable

  1. Verificar la integridad de los datos: Asegúrate de que todos los registros tienen valores completos antes de agruparlos.
  1. Inicializa tus acumuladores correctamente: Si estás sumando o contando, asegúrate de inicializar la variable a cero.
  1. Escoge el operador correcto para cada caso: Utiliza sum para suma, max para máxima cantidad, etc., dependiendo del dato que estés agrupando.
  1. Maneja casos especiales como valores faltantes: Decide cómo manejar los registros con valores nulos o no proporcionados.
  1. Documenta tu código: Comenta en qué se usa cada acumulador y cuál es la función de cada variable para evitar confusión.

Cierre: Siguientes pasos

Para profundizar en el tema, te sugerimos:

  • Aprender sobre diccionarios anidados: Estudia cómo manejar datos estructurados con múltiples niveles.
  • Explorar funciones avanzadas de agregación: Python ofrece varias funciones en functools y collections para realizar operaciones complejas.
  • Ejercicios prácticos: Aplica estos conceptos a conjuntos de datos reales, como ventas o inventarios.

Siguiendo estas pautas, podrás manipular y analizar grandes volúmenes de datos con mayor eficacia.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).