typestar

pl_sales_report.py en Python

Armar un resumen mensual de ventas desde transacciones crudas.

"""Resume las ventas mensuales de transacciones crudas con Polars."""
import polars as pl


def armar_reporte(transacciones):
    df = pl.DataFrame(transacciones)
    return (
        df
        .with_columns(
            (pl.col("units") * pl.col("price")).alias("revenue"),
            pl.col("date").str.slice(0, 7).alias("month"),
        )
        .group_by("month", "product")
        .agg(
            pl.col("revenue").sum().round(2).alias("revenue"),
            pl.col("units").sum().alias("units"),
        )
        .sort("revenue", descending=True)
    )


def principal():
    transacciones = [
        {"date": "2026-06-03", "product": "kea", "units": 4, "price": 9.5},
        {"date": "2026-06-19", "product": "tui", "units": 2, "price": 12.0},
        {"date": "2026-07-02", "product": "kea", "units": 7, "price": 9.5},
        {"date": "2026-07-21", "product": "tui", "units": 5, "price": 12.0},
    ]
    reporte = armar_reporte(transacciones)
    print(reporte)
    print(f"ingreso total: {reporte['revenue'].sum():.2f}")


if __name__ == "__main__":
    principal()

Cómo funciona

  1. Expresiones derivan el ingreso y una columna de mes.
  2. group_by agrega el ingreso y las unidades.
  3. El reporte se ordena por ingreso y lo totaliza.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
35
Caracteres a escribir
915
Tokens
320
Ritmo de tres estrellas
115 tpm

Al ritmo de tres estrellas de 115 tokens por minuto, este intento toma unos 167 segundos.

Escribe este fragmento

Paso 1 de 2 en Bis; paso 31 de 32 en Polars.

← Anterior Siguiente →