Polars用户指南 #
Polars是一个速度极快的用于处理结构化数据的库。其核心使用Rust语言编写,并且可在Python、R和NodeJS中使用。
关键特性 #
- 快速: 用Rust语言从零开始编写,设计上贴近机器且没有外部依赖项。
- I/O: 对所有常见的数据存储层提供一流的支持:本地存储、云存储以及数据库。
- 直观易懂的API: 按照预期的方式编写查询语句,Polars在内部会使用其查询优化器来确定执行查询的最高效方式。
- Out of Core: 流式处理应用程序编程接口(API)使你能够处理结果,而无需让所有数据同时都存储在内存中。
- 并行处理: 无需任何额外配置,通过在可用的CPU核心之间分配工作负载来利用机器的性能。
- 向量化查询引擎
- GPU支持: 可选择在英伟达(NVIDIA)图形处理器(GPU)上运行查询,以便在处理内存中的工作负载时实现最佳性能。
- 支持Apache Arrow: Polars 通常可以通过零拷贝操作来读取和生成 Arrow 格式的数据。请注意,Polars 并非构建于 Pyarrow/Arrow 的实现之上。相反,Polars 拥有其自身的计算和缓冲区实现方式。
DataFrames新手提醒
DataFrames是一种二维数据结构,对数据处理和分析很有帮助。DataFrames具有带标签的行轴和列轴,每一列可以包含不同的数据类型,这使得诸如合并和聚合等复杂的数据操作变得容易得多。由于DataFrames在存储和处理数据方面具有灵活性和直观性,它们在现代数据分析和工程领域中越来越受欢迎。
Polars设计哲学 #
Polars的目标是提供一个速度极快的DataFrame库,该库:
- 利用你机器上的所有可用核心。
- 优化查询以减少不必要的工作和内存分配。
- 能够处理比你机器可用内存大得多的数据集。
- 一个一致且可预测的应用程序编程接口(API)。
- 遵循严格的模式(在运行查询之前就应知晓数据类型)。
Polars 是用 Rust 语言编写的,这赋予了它媲美 C/C++ 语言的性能,并且使其能够完全掌控查询引擎中对性能至关重要的部分。
示例 #
import polars as pl
q = (
pl.scan_csv("docs/assets/data/iris.csv")
.filter(pl.col("sepal_length") > 5)
.group_by("species")
.agg(pl.all().sum())
)
df = q.collect()
详细的介绍见 Polars入门。
沟通 #
Polars拥有一个非常活跃的社区,频繁发布更新(大约每周一次)。
许可 #
本项目根据麻省理工学院( MIT license)许可条款进行授权。