用途:Polars 是面向 Python 和 Rust 的高性能 DataFrame 库,基于 Apache Arrow,用于单机内存内数据分析。当 pandas 代码过慢但数据(或惰性查询涉及的列)能放进一台机器时适用,也适合用 scan_csv、scan_parquet 构建 ETL 与特征管道、把 pandas 代码迁移到表达式 API,以及在大表上做窗口函数、连接和分组聚合。集群分布式执行、十亿行外存探索、初次数据质量探查等场景应改用其他工具。
主要能力:表达式 API(pl.col 引用列,可组合复用);惰性求值(LazyFrame 先构建查询计划再优化执行,支持谓词下推、投影下推、并行执行);即时求值(DataFrame 立即执行);分组聚合与 over() 窗口函数;连接、拼接、pivot/unpivot 等变换;CSV、Parquet、JSON、Excel、数据库、云存储与 BigQuery 等 I/O。
使用方式:安装可执行 uv add 'polars>=1.0,<2'。基本用法如 pl.DataFrame 创建、df.select、df.filter、df.with_columns;惰性写法用 pl.scan_csv 后链式操作再 .collect()。流式引擎用 lf.collect(engine="streaming")。
限制与注意:Polars 2.0 处于候选发布阶段,升级指南列出会静默改变结果的变化,如 collect() 默认流式引擎、join/unpivot 行序可能变化、concat(how="horizontal") 要求等高、explode() 丢弃空列表、is_in 拒绝有损转换、profile() 被移除、无表头 CSV 列名从 column_0 开始,迁移前应查阅官方升级文档。1.x 中若干旧名已变更,如 read_csv(dtypes=) 改为 schema_overrides、pl.Utf8 改为 pl.String、join(how="outer") 改为 how="full"、pivot(columns=) 改为 pivot(on=)、collect(streaming=True) 改为 collect(engine="streaming")、read_database(connection_uri=) 改为 read_database_uri(uri=)。性能上应优先惰性求值、尽早选择所需列、避免在热路径使用 Python 函数、必要时才用 map_elements,并选用合适数据类型。该技能附带 core_concepts.md、operations.md、pandas_migration.md、io_guide.md、transformations.md、best_practices.md 等参考文档。