数据分析
polars avatar

polars

高性能 Python 与 Rust 内存内 DataFrame 库。支持延迟计算、并行处理,并使用 Apache Arrow 引擎,适用于高效 ETL、数据处理及加速 pandas 工作流。

简介

Polars 是一个极速、多线程的 DataFrame 库,专为 Rust 和 Python 生态系统构建,旨在处理可放入系统内存内的中大型数据集。通过使用 Apache Arrow 作为核心内存格式并提供基于表达式的 API,Polars 为复杂数据处理提供了比 pandas 更高效的选择。其架构通过内存映射、查询优化和高效缓存操作,专门针对性能进行了优化,是数据工程师与科学家处理 1GB 到 100GB 数据集时不可或缺的工具,无需处理基于磁盘的分布式系统的开销。

该库允许用户使用立即执行模式或延迟计算框架来定义复杂的数据转换流程。延迟 API 特别强大,因为它允许引擎在实际处理数据前执行谓词下推、投影下推与查询计划优化,显著降低了 ETL、特征工程与探索性数据分析任务中的计算时间和内存消耗。

  • 基于表达式的 API:使用类似 SQL 或函数式编程的语法,实现声明式、可组合且可串联的转换。

  • 延迟计算 (Lazy Evaluation):自动优化查询计划,向下推动过滤器或选择,减少不必要的数据读取。

  • 多线程引擎:默认并行处理所有可用 CPU 核心上的操作,性能表现远超单线程库。

  • 内存效率:基于 Arrow 内存模型构建,支持零拷贝操作并减少内存分配。

  • 多样化 I/O:与 CSV、Parquet、JSON、Excel 及各种 SQL 数据库连接器无缝集成。

  • 窗口函数:提供对复杂分析计算(如 over() 分组与滚动聚合)的高级支持。

  • 适用于希望从 pandas 迁移且需要更高性能,但无需切换至 Dask 或 Spark 等分布式工具的用户。

  • 最适合 1GB 至 100GB 的数据集;若数据集超出 RAM 容量,请考虑使用 Dask 或 Vaex。

  • 输入:支持本地文件、云端存储路径 (S3/GCS/Azure) 及流数据。

  • 输出:DataFrame 对象、已优化的查询计划,或直接写入文件/数据库。

  • 使用技巧:处理大文件时,优先使用 scan_ 方法(如 scan_csv)而非 read_ 方法,以充分发挥延迟计算与查询优化的优势。

仓库统计

Star 数
19,721
Fork 数
2,202
Open Issue 数
42
主要语言
Python
默认分支
main
同步状态
空闲
最近同步时间
2026年4月29日 14:53
在 GitHub 查看