polars.Expr.value_counts
-
Подсчитывает количество вхождений уникальных значений.
- Параметры:
-
- 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 │ └───────┴──────────┘
Expr.value_counts(
*,
sort: bool = False,
parallel: bool = False,
name: str_ | None = None,
normalize: bool = False,
) → Expr
© 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