polars-essentials-in-two-concepts / zh
两个概念掌握Polars DataFrame核心使用思路
- 这些核心API能覆盖80%的日常数据操作需求

数据与计算分离:Polars的设计哲学
- Polars API建立在"数据-计算分离"的理念上:操作描述与执行环境相互独立。这类似于前端开发中HTML(内容)与CSS(呈现)的分离。
- 在Polars中:
- 表达式(Expression) 抽象计算操作
- 上下文(Context) 抽象"在哪里执行计算"
表达式系统
- Polars表达式类似于数学表达式,只不过变量是通过
pl.col引用的数据列。例如: - ```python
from polars import col
e1 = col('某列名')
e2 = col('其他列').alias('新名称')
e3 = e1 + e2 - 1
``` - 如上所示,
e1、e2、e3都是pl.Expr类型。一个表达式可以是单列,也可以是列与运算符的组合树。注意此时并未发生实际计算,表达式只是"待计算的蓝图"。
计算上下文
- 表达式有专用类型(
pl.Expr),而计算上下文则存在于执行这些表达式的DataFrame方法中。每个方法都会返回新的DataFrame,不会修改原始数据。请看示例: - ```python
import polars as pl
df = pl.DataFrame({'x': [2, 3]})
# .select: 新DataFrame只包含表达式结果
df_new1 = df.select((pl.col('x') ** 2).alias('x平方'))
# → {'x平方': [4, 9]}
# .with_columns: 保留原列并添加表达式结果
df_new2 = df.with_columns(
pl.col('x') * -1, # 可理解为"插入或更新列"
(pl.col('x') * 2).alias('2x'), # 表达式相互独立
)
# → {'x': [-2, -3], '2x': [4, 6]}
# .filter: 筛选满足条件的行
df_new3 = df.filter(pl.col('x') == 2)
# → {"x": [2]}
``` 核心要点
- 实际工作中:
df.select和df.with_columns处理列选择与创建df.filter处理行筛选- 这三个方法组合就能解决80%的二维表格操作需求,是数据处理中最常用的"三剑客"。
- tags: polars