Spec-Zone.ru › Polars

polars.Expr.value_counts

Expr.value_counts(
    *,
    sort: bool = False,
    parallel: bool = False,
    name: str_ | None = None,
    normalize: bool = False,
) → Expr

Подсчитывает количество вхождений уникальных значений.

движок:В памятиПотоковая обработка
Параметры:
sort

Сортировать результат по количеству в порядке убывания. Если задано False (по умолчанию), порядок не детерминирован.

parallel

Выполнять вычисление параллельно.

Примечание

Вероятно, этот параметр не следует включать в контексте group_by, поскольку вычисление уже будет выполняться параллельно для каждой группы.

name

Задать столбцу с результатами подсчёта определённое имя; если normalize имеет значение True, по умолчанию используется «proportion», в противном случае — «count».

normalize

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

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

Выражение типа Struct, сопоставляющее уникальные значения с их количеством (или долей).

Примеры

>>> df = pl.DataFrame(
...     {"color": ["red", "blue", "red", "green", "blue", "blue"]}
... )
>>> df_count = df.select(pl.col("color").value_counts())
>>> df_count  
shape: (3, 1)
┌─────────────┐
│ color       │
│ ---         │
│ struct[2]   │
╞═════════════╡
│ {"green",1} │
│ {"blue",3}  │
│ {"red",2}   │
└─────────────┘
>>> df_count.unnest("color")  
shape: (3, 2)
┌───────┬───────┐
│ color ┆ count │
│ ---   ┆ ---   │
│ str   ┆ u32   │
╞═══════╪═══════╡
│ green ┆ 1     │
│ blue  ┆ 3     │
│ red   ┆ 2     │
└───────┴───────┘

Отсортировать результат по количеству (в порядке убывания), задать имя поля и нормировать количество до относительной доли (от 1.0).

>>> df_count = df.select(
...     pl.col("color").value_counts(
...         name="fraction",
...         normalize=True,
...         sort=True,
...     )
... )
>>> df_count
shape: (3, 1)
┌────────────────────┐
│ color              │
│ ---                │
│ struct[2]          │
╞════════════════════╡
│ {"blue",0.5}       │
│ {"red",0.333333}   │
│ {"green",0.166667} │
└────────────────────┘
>>> df_count.unnest("color")
shape: (3, 2)
┌───────┬──────────┐
│ color ┆ fraction │
│ ---   ┆ ---      │
│ str   ┆ f64      │
╞═══════╪══════════╡
│ blue  ┆ 0.5      │
│ red   ┆ 0.333333 │
│ green ┆ 0.166667 │
└───────┴──────────┘

Обратите внимание, что для подсчёта можно использовать group_by.

>>> df.group_by("color").len()  
shape: (3, 2)
┌───────┬─────┐
│ color ┆ len │
│ ---   ┆ --- │
│ str   ┆ u32 │
╞═══════╪═════╡
│ red   ┆ 2   │
│ green ┆ 1   │
│ blue  ┆ 3   │
└───────┴─────┘

Чтобы добавить количество в виде нового столбца, можно использовать pl.len() как оконную функцию.

>>> df.with_columns(pl.len().over("color"))
shape: (6, 2)
┌───────┬─────┐
│ color ┆ len │
│ ---   ┆ --- │
│ str   ┆ u32 │
╞═══════╪═════╡
│ red   ┆ 2   │
│ blue  ┆ 3   │
│ red   ┆ 2   │
│ green ┆ 1   │
│ blue  ┆ 3   │
│ blue  ┆ 3   │
└───────┴─────┘
>>> df.with_columns((pl.len().over("color") / pl.len()).alias("fraction"))
shape: (6, 2)
┌───────┬──────────┐
│ color ┆ fraction │
│ ---   ┆ ---      │
│ str   ┆ f64      │
╞═══════╪══════════╡
│ red   ┆ 0.333333 │
│ blue  ┆ 0.5      │
│ red   ┆ 0.333333 │
│ green ┆ 0.166667 │
│ blue  ┆ 0.5      │
│ blue  ┆ 0.5      │
└───────┴──────────┘

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

Spec-Zone.ru

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