typestar

Expresiones de ventana en Python

over calcula por grupo pero conserva cada fila, cosa que agg no hace.

import polars as pl

tabla = pl.DataFrame({
    "lang": ["python", "python", "rust", "rust"],
    "tpm": [104, 91, 98, 88],
})

clasificado = tabla.with_columns(
    pl.col("tpm").mean().over("lang").alias("group_mean"),
    (pl.col("tpm") / pl.col("tpm").sum().over("lang")).round(3).alias("share"),
    pl.col("tpm").rank(descending=True).over("lang").alias("rank_in_group"),
)
print(clasificado)

Cómo funciona

  1. expr.over(key) propaga el valor del grupo de vuelta a sus filas.
  2. Así se obtiene la proporción del total del grupo.
  3. rank().over(...) numera las filas dentro de su grupo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
378
Tokens
160
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 87 segundos.

Escribe este fragmento

Paso 3 de 3 en Agregación; paso 14 de 32 en Polars.

← Anterior Siguiente →