Polars 表达式指南

发布于:2024-10-09 ⋅ 阅读:(222) ⋅ 点赞:(0)

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 官方文档


网站公告

今日签到

点亮在社区的每一天
去签到