pola-rs/polars

GitHub: pola-rs/polars

基于 Rust 开发的超快多线程 DataFrame 库,专为高效处理大规模结构化数据与复杂查询而设计。

Stars: 37613 | Forks: 2657

Polars logo

crates.io Latest Release PyPi Latest Release NPM Latest Release R-multiverse Latest Release DOI Latest Release

文档: Python - Rust - Node.js - R | StackOverflow: Python - Rust - Node.js - R | 用户指南 | Discord

## Polars:用 Rust 编写的极快 DataFrame 查询引擎 Polars 是为 DataFrame 编写的分析查询引擎。它被设计得快速、易用且富有表现力。主要特性包括: - 延迟 | 即时执行 - 流式处理(大于内存的数据集) - 查询优化 - 多线程 - 使用 Rust 编写 - SIMD - 强大的表达式 API - 支持 Python | Rust | NodeJS | R | SQL 前端 - [Apache Arrow 列式格式](https://arrow.apache.org/docs/format/Columnar.html) 想了解更多,请阅读[用户指南](https://docs.pola.rs/)。 ## 性能 🚀🚀 ### 极速 Polars 非常快。事实上,它是现有性能最好的解决方案之一。请参阅 [PDS-H 基准测试](https://www.pola.rs/benchmarks.html)结果。 ### 轻量级 Polars 也非常轻量。它没有必需的依赖项,这体现在导入时间上: - polars: 70ms - numpy: 104ms - pandas: 520ms ### 处理大于内存的数据 如果您有无法装入内存的数据,Polars 的查询引擎能够以流式方式处理您的查询(或查询的一部分)。这大大降低了内存需求,因此您可能可以在笔记本电脑上处理 250GB 的数据集。使用 `collect(engine='streaming')` 以流式方式运行查询。 ## 设置 ### Python 使用以下命令安装最新版本的 Polars: ``` pip install polars ``` 有关可选依赖项的更多详细信息,请参阅[用户指南](https://docs.pola.rs/user-guide/installation/#feature-flags) 要查看当前的 Polars 版本及其可选依赖项的完整列表,请运行: ``` pl.show_versions() ``` ## 贡献 想要贡献?请阅读我们的[贡献指南](https://docs.pola.rs/development/contributing/)。 ## 托管/分布式 Polars 您是否想要托管解决方案或扩展到分布式集群?请考虑我们的[产品](https://cloud.pola.rs/)并帮助该项目! ## Python:从源码编译 Polars 如果您想要最新的前沿版本或极致的性能,您应该从源码编译 Polars。 这可以通过按顺序执行以下步骤来完成: 1. 安装最新的 [Rust 编译器](https://www.rust-lang.org/tools/install) 2. 安装 [maturin](https://maturin.rs/):`pip install maturin` 3. `cd py-polars` 并选择以下选项之一: - `make build`,包含调试断言和符号的慢速二进制文件,编译时间短 - `make build-release`,不含调试断言、包含最少调试符号的快速二进制文件,编译时间长 - `make build-nodebug-release`,与 build-release 相同,但没有任何调试符号,编译速度稍快 - `make build-debug-release`,与 build-release 相同,但包含完整调试符号,编译速度稍慢 - `make build-dist-release`,最快的二进制文件,编译时间极长 默认情况下,二进制文件是针对现代 CPU 开启优化进行编译的。如果您的 CPU 较旧且不支持例如 AVX2,请在命令中指定 `LTS_CPU=1`。 请注意,实现 Python 绑定的 Rust crate 被称为 `py-polars`,以区别于被包装的 Rust crate `polars` 本身。但是,Python 包和 Python 模块都被命名为 `polars`,因此您可以 `pip install polars` 并 `import polars`。 ## 在 Python 中使用自定义 Rust 函数 使用 Rust 编译的 UDF 扩展 Polars 很容易。我们为 `DataFrame` 和 `Series` 数据结构暴露了 PyO3 扩展。更多详情请见 https://github.com/pola-rs/polars/tree/main/pyo3-polars。 ## 处理超大数据... 您预计会有超过 2^32(约 42 亿)行吗?使用 `bigidx` 功能标志编译 Polars,或者对于 Python 用户,安装 `pip install polars[rt64]`。 除非您遇到行数限制,否则不要使用此功能,因为默认的 Polars 构建速度更快且消耗更少的内存。 ## 旧版支持 您想让 Polars 在旧 CPU(例如 2011 年之前的)上运行,还是在 Apple Silicon 上的 Rosetta 下运行的 `x86-64` 版 Python 上运行?安装 `pip install polars[rtcompat]`。此版本的 Polars 在编译时未包含 [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions) 目标特性。
标签:API, DataFrame, ETL, GNU通用公共许可证, JavaCC, MITM代理, Node.js, OLAP, Polars, Python, Rust, Rust库, R语言, SQL接口, 代码示例, 内存数据库, 可视化界面, 多线程, 大数据, 并行计算, 开源库, 搜索引擎爬虫, 数据分析, 数据清洗, 数据科学, 无后门, 查询引擎, 目录扫描, 网络流量审计, 资源验证, 逆向工具, 通知系统, 通知系统