polars-essentials-in-two-concepts / zh

  • 两个概念掌握Polars DataFrame核心使用思路

    • 这些核心API能覆盖80%的日常数据操作需求
    • Polars标志
  • 数据与计算分离: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
      ```
    • 如上所示,e1e2e3都是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.selectdf.with_columns处理列选择与创建
    • df.filter处理行筛选
    • 这三个方法组合就能解决80%的二维表格操作需求,是数据处理中最常用的"三剑客"。
  • tags: polars

A digital garden, perpetually growing.