SuperAPI AI 工具集

polars

数据与分析

查看项目

更新于 10-16 03:32

技能介绍

Polars 是一个用 Rust 编写、带有 Python 绑定的高性能 DataFrame 库,面向快速且内存高效的数据处理与分析。它利用并行执行和惰性求值,在处理大型数据集时通常比 pandas 更快。

用途 该技能适用于用户需要高性能 DataFrame 操作、明确提到 Polars 或要求“快速”数据处理、需要处理百万行级大型数据集、希望使用惰性求值进行查询优化、需要进行数据转换/过滤/分组/聚合、需要读写 CSV、Parquet、JSON 等格式,或希望将 Polars 与 DuckDB 结合用于 SQL + DataFrame 工作流的场景。

安装 检查是否已安装:python3 -c "import polars as pl; print(pl.version)"。若未安装:pip3 install polars。完整功能(含 Parquet 支持):pip3 install 'polars[pyarrow]'。DuckDB 集成:pip3 install polars duckdb 'polars[pyarrow]'。

主要能力

  1. 读取数据:支持 read_csv、read_parquet、read_json,以及读取多个文件(如 'data/*.csv');也可使用 scan_csv、scan_parquet 进行惰性读取。
  2. 选择与过滤:使用 select 选择列,支持表达式与别名;使用 filter 过滤行,支持多条件(&)和字符串方法(如 str.contains)。
  3. 转换与新列:使用 with_columns 添加或修改列,支持算术、字符串大小写转换、条件逻辑(when/then/otherwise)、日期解析(str.strptime)、重命名(rename)。
  4. 聚合与分组:使用 group_by 配合 agg 进行求和、均值、计数、去重计数等;支持多列分组;也可不分组直接对列做统计。
  5. 排序与排名:使用 sort 支持单列、降序、多列排序;使用 rank 配合 over 在分组内排名。
  6. 连接:使用 join 支持 inner、left 等连接方式,可按同名列、不同列名(left_on/right_on)或多列连接。
  7. 窗口函数:支持 cum_sum、rolling_mean、rank、shift 等配合 over 在分组内计算累计、滚动平均、排名、滞后/超前值。

惰性求值与性能 惰性 API 会在执行前优化查询:使用 scan_csv/scan_parquet 开始,链式调用 filter、select、group_by、agg、sort,最后用 collect() 执行,或用 explain() 查看执行计划。性能建议包括:对大数据集使用惰性求值、使用 Parquet 格式、尽早过滤、避免逐行迭代、使用表达式而非 pandas 风格操作。

常见模式 包括 ETL 管道(提取、清洗、转换、聚合、写出 Parquet)、数据探索(head、describe、schema、列统计、空值计数、value_counts、n_unique)、与 DuckDB 结合(Polars 加载数据,DuckDB 执行 SQL,再转回 Polars DataFrame)、写出数据(write_csv、write_parquet、write_json、按列分区写出 Parquet)。

表达式链式调用 支持字符串操作、算术、条件逻辑、日期操作(dt.year、dt.month)、列表操作(list.len)等。

与 pandas 的差异 Polars DataFrame 不可变(操作返回新 DataFrame);通常比 pandas 快 5-10 倍;支持惰性求值优化;使用表达式 API 而非方法链;自动并行化。

错误处理 可使用 try/except 捕获 FileNotFoundError、pl.exceptions.ComputeError 及其他异常。

资源 references/api_reference.md 提供详细 API 文档与示例;官方文档 https://docs.pola.rs/;API 参考 https://docs.pola.rs/api/python/stable/reference/。