基于Rust的数据框架库Polars会取代Pandas吗?


Polars 是一个为 Python 和 Rust 提供内存数据帧的开源项目。尽管它还很年轻(它的第一次提交是在仅仅两年前,在 COVID-19 大流行期间),但由于其“闪电般”的性能和 API 的表现力,它已经获得了广泛的欢迎。

Polars 最有趣的事情之一是它提供了两种操作模式:

  • Eager模式有点类似于 pandas 的工作方式:操作立即执行,其结果可在内存中使用。然而,链中的每个操作都需要分配一个 DataFrame,这并不理想。
  • 另一方面,惰性模式构建了一个尽可能利用并行性的优化查询计划:Polars 应用了几种简化技术并推动计算以尽可能加快运行时间。

Polars 的另一个秘诀是 Apache Arrow。虽然其他库使用 Arrow 来读取 Parquet 文件,但 Polars 与之紧密结合:通过使用Arrow 内存格式的 Rust 原生实现来进行列式存储,Polars 可以利用高度优化的 Arrow 数据结构并专注于数据操纵操作。

如果您正在为大于 RAM 的数据集寻找终极解决方案,Polars 可能不适合您。它的惰性处理能力可以带你走很远,但在某些时候你将不得不面对这样一个事实,Polars 是一个内存数据帧库,类似于 pandas。

总之:

  • 如果您愿意学习不同但功能强大的新 API,如果您的数据适合内存,如果您的工作流程涉及大量列表列操作,并且通常如果您想探索比 pandas 更快的替代方案,请使用 Polars。
  • 如果您的数据比 RAM 大得多,如果您正在寻找快速迁移大型 pandas 代码库的解决方案,或者如果您正在寻找久经考验的旧库,请不要使用 Polars。

详细点击标题