Polars 表达式指南
Polars 是一个用 Rust 编写的 DataFrame 库,使用 Arrow 作为其底层数据结构。它的目标是通过并行化 DataFrame 上的查询,提供一个快速的解决方案。
表达式
Polars 表达式允许你通过多种方式操作和分析数据。下面是一个简单的表达式例子:
import polars as pl
df = pl.DataFrame({
"nrs": [1, 2, 3, None, 5],
"names": ["foo", "ham", "spam", "egg", None],
"random": [0.154163, 0.74005, 0.263315, 0.533739, 0.014575],
"groups": ["A", "A", "B", "C", "B"]
})
# 表达式示例
df.select([
pl.col("names").n_unique().alias("unique_names_1"),
pl.col("names").unique().count().alias("unique_names_2")
])
统计不重复元素数量
我们可以使用不同的方法来统计一列中不重复元素的数量:
out = df.select([
pl.col("names").n_unique().alias("unique_names_1"),
pl.col("names").unique().count().alias("unique_names_2")
])
print(out)
不同的聚合操作
Polars 支持多种聚合操作,例如求和、最小值、最大值等:
out = df.select([
pl.sum("random").alias("sum"),
pl.min("random").alias("min"),
pl.max("random").alias("max"),
pl.col("random").max().alias("other_max"),
pl.std("random").alias("std dev"),
pl.var("random").alias("variance")
])
print(out)
过滤和条件选择
使用表达式,我们可以进行复杂的过滤和条件选择操作:
out = df.select([
pl.col("names").filter(pl.col("names").str.contains(r"am$")).count()
])
print(out)
二元函数和修改
Polars 表达式还可以用于创建复杂的逻辑表达式:
out = df.select([
pl.when(pl.col("random") > 0.5).then(0).otherwise(pl.col("random")) * pl.sum("nrs")
])
print(out)
窗口表达式
Polars 表达式还可以用于执行窗口函数,例如分组、聚合等操作:
df = df.select([
pl.col("*"), # 选择所有列
pl.col("random").sum().over("groups").alias("sum[random]/groups")
])
print(df)
更多详细信息和高级用法,请访问Polars 官方文档。