如何找到极坐标序列中最频繁值(众数)的频率?
How to find the frequency of the most frequent value (mode) of a series in polars?
import polars as pl
df = pl.DataFrame({
"tags": ["a", "a", "a", "b", "c", "c", "c", "c", "d"]
})
这是使用 .mode
表达式计算列中出现次数最多的元素的方法:
df.select([
pl.col("tags").mode().alias("mode"),
])
我怎样才能同时显示该模式的 frequency/count?
我找到了这个方法,但是不知道有没有更好的方法:
df.select([
pl.col("tags").mode().alias("mode"),
pl.col("tags").filter(pl.col("tags") == pl.col("tags").mode()).count().alias("count")
])
输出:
shape: (1, 2)
┌──────┬───────┐
│ mode ┆ count │
│ --- ┆ --- │
│ str ┆ u32 │
╞══════╪═══════╡
│ c ┆ 4 │
└──────┴───────┘
有一个value_counts
表达式。此表达式将 return 一个 Struct
数据类型,其中第一个字段是唯一值,第二个字段是该值的计数。
df.select([
pl.col("tags").value_counts()
])
shape: (4, 1)
┌───────────┐
│ tags │
│ --- │
│ struct[2] │
╞═══════════╡
│ {"c",4} │
├╌╌╌╌╌╌╌╌╌╌╌┤
│ {"a",3} │
├╌╌╌╌╌╌╌╌╌╌╌┤
│ {"b",1} │
├╌╌╌╌╌╌╌╌╌╌╌┤
│ {"d",1} │
└───────────┘
或者,如果您希望将结果作为 DataFrame
:
(df.select([
pl.col("tags").value_counts()
]).to_series().struct.to_frame())
shape: (4, 2)
┌──────┬────────┐
│ tags ┆ counts │
│ --- ┆ --- │
│ str ┆ u32 │
╞══════╪════════╡
│ c ┆ 4 │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ a ┆ 3 │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ d ┆ 1 │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ b ┆ 1 │
└──────┴────────┘
已编辑:
哪个可以更简单:
df["tags"].value_counts()
import polars as pl
df = pl.DataFrame({
"tags": ["a", "a", "a", "b", "c", "c", "c", "c", "d"]
})
这是使用 .mode
表达式计算列中出现次数最多的元素的方法:
df.select([
pl.col("tags").mode().alias("mode"),
])
我怎样才能同时显示该模式的 frequency/count?
我找到了这个方法,但是不知道有没有更好的方法:
df.select([
pl.col("tags").mode().alias("mode"),
pl.col("tags").filter(pl.col("tags") == pl.col("tags").mode()).count().alias("count")
])
输出:
shape: (1, 2)
┌──────┬───────┐
│ mode ┆ count │
│ --- ┆ --- │
│ str ┆ u32 │
╞══════╪═══════╡
│ c ┆ 4 │
└──────┴───────┘
有一个value_counts
表达式。此表达式将 return 一个 Struct
数据类型,其中第一个字段是唯一值,第二个字段是该值的计数。
df.select([
pl.col("tags").value_counts()
])
shape: (4, 1)
┌───────────┐
│ tags │
│ --- │
│ struct[2] │
╞═══════════╡
│ {"c",4} │
├╌╌╌╌╌╌╌╌╌╌╌┤
│ {"a",3} │
├╌╌╌╌╌╌╌╌╌╌╌┤
│ {"b",1} │
├╌╌╌╌╌╌╌╌╌╌╌┤
│ {"d",1} │
└───────────┘
或者,如果您希望将结果作为 DataFrame
:
(df.select([
pl.col("tags").value_counts()
]).to_series().struct.to_frame())
shape: (4, 2)
┌──────┬────────┐
│ tags ┆ counts │
│ --- ┆ --- │
│ str ┆ u32 │
╞══════╪════════╡
│ c ┆ 4 │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ a ┆ 3 │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ d ┆ 1 │
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ b ┆ 1 │
└──────┴────────┘
已编辑: 哪个可以更简单:
df["tags"].value_counts()