Dado um DataFrame com coluna categórica:
import polars as pl
df = pl.DataFrame({
"id": ["a", "a", "a", "b", "b", "b", "b"],
"value": [1,1,1,6,6,6,6],
})
res = df.with_columns(bucket = pl.col.value.cut([1,3]))
shape: (7, 3)
┌─────┬───────┬───────────┐
│ id ┆ value ┆ bucket │
│ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ cat │
╞═════╪═══════╪═══════════╡
│ a ┆ 1 ┆ (-inf, 1] │
│ a ┆ 1 ┆ (-inf, 1] │
│ a ┆ 1 ┆ (-inf, 1] │
│ b ┆ 6 ┆ (3, inf] │
│ b ┆ 6 ┆ (3, inf] │
│ b ┆ 6 ┆ (3, inf] │
│ b ┆ 6 ┆ (3, inf] │
└─────┴───────┴───────────┘
Como obtenho todos os valores potenciais da coluna categórica? Posso obtê-los como strings com pl.Expr.cat.get_categories()
as strings?
res.select(pl.col.bucket.cat.get_categories())
shape: (3, 1)
┌───────────┐
│ bucket │
│ --- │
│ str │
╞═══════════╡
│ (-inf, 1] │
│ (1, 3] │
│ (3, inf] │
└───────────┘
Também posso obter todos os valores existentes em sua representação física compl.Expr.to_physical()
res.select(pl.col.bucket.to_physical())
shape: (7, 1)
┌────────┐
│ bucket │
│ --- │
│ u32 │
╞════════╡
│ 0 │
│ 0 │
│ 0 │
│ 2 │
│ 2 │
│ 2 │
│ 2 │
└────────┘
Mas como posso obter todos os valores potenciais em sua representação física? Eu esperaria uma saída como:
shape: (3, 1)
┌────────┐
│ bucket │
│ --- │
│ u32 │
╞════════╡
│ 0 │
│ 1 │
│ 2 │
└────────┘
Ou devo simplesmente assumir que ele é sempre codificado como um intervalo de números inteiros sem lacunas?