Spec-Zone.ru › Polars

polars.Expr.qcut

Expr.qcut(
    quantiles: Sequence[float] | int,
    *,
    labels: Sequence[str_] | None = None,
    left_closed: bool = False,
    allow_duplicates: bool = False,
    include_breaks: bool = False,
) → Expr

Разбивает непрерывные значения на дискретные категории на основе их квантилей.

движок:В памяти

Предупреждение

Эта функциональность считается нестабильной. Она может быть изменена в любой момент без необходимости считать это несовместимым изменением.

Параметры:
quantiles

Список вероятностей квантилей от 0 до 1 или положительное целое число, определяющее количество интервалов с равномерной вероятностью.

labels

Названия категорий. Количество меток должно совпадать с количеством категорий.

left_closed

Задать для интервалов включение левой границы вместо правой.

allow_duplicates

Если установлено значение True, повторяющиеся значения в полученных квантилях удаляются, а не вызывают DuplicateError. Это может произойти даже при уникальных вероятностях, в зависимости от данных.

include_breaks

Добавить столбец с правой границей интервала, в который попадает каждое наблюдение. Это изменит тип данных результата с Categorical на Struct.

Возвращает:
Expr

Выражение типа данных Categorical, если для include_breaks задано значение False (по умолчанию); в противном случае — выражение типа данных Struct.

См. также

cut

Примеры

Разделить столбец на три категории в соответствии с предварительно заданными вероятностями квантилей.

>>> df = pl.DataFrame({"foo": [-2, -1, 0, 1, 2]})
>>> df.with_columns(
...     pl.col("foo").qcut([0.25, 0.75], labels=["a", "b", "c"]).alias("qcut")
... )
shape: (5, 2)
┌─────┬──────┐
│ foo ┆ qcut │
│ --- ┆ ---  │
│ i64 ┆ cat  │
╞═════╪══════╡
│ -2  ┆ a    │
│ -1  ┆ a    │
│ 0   ┆ b    │
│ 1   ┆ b    │
│ 2   ┆ c    │
└─────┴──────┘

Разделить столбец на две категории, используя равномерные вероятности квантилей.

>>> df.with_columns(
...     pl.col("foo")
...     .qcut(2, labels=["low", "high"], left_closed=True)
...     .alias("qcut")
... )
shape: (5, 2)
┌─────┬──────┐
│ foo ┆ qcut │
│ --- ┆ ---  │
│ i64 ┆ cat  │
╞═════╪══════╡
│ -2  ┆ low  │
│ -1  ┆ low  │
│ 0   ┆ high │
│ 1   ┆ high │
│ 2   ┆ high │
└─────┴──────┘

Добавить категорию и границу интервала.

>>> df.with_columns(
...     pl.col("foo").qcut([0.25, 0.75], include_breaks=True).alias("qcut")
... ).unnest("qcut")
shape: (5, 3)
┌─────┬────────────┬────────────┐
│ foo ┆ breakpoint ┆ category   │
│ --- ┆ ---        ┆ ---        │
│ i64 ┆ f64        ┆ cat        │
╞═════╪════════════╪════════════╡
│ -2  ┆ -1.0       ┆ (-inf, -1] │
│ -1  ┆ -1.0       ┆ (-inf, -1] │
│ 0   ┆ 1.0        ┆ (-1, 1]    │
│ 1   ┆ 1.0        ┆ (-1, 1]    │
│ 2   ┆ inf        ┆ (1, inf]   │
└─────┴────────────┴────────────┘

© 2020 Ritchie Vink
© 2022 Polars contributors
Licensed under the MIT License.
https://docs.pola.rs/api/python/stable/reference/expressions/api/polars.Expr.qcut.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API