大家好,我是木木。
今天给大家分享一个超酷的 Python 库
Polars 是一个高性能的数据处理和分析库,设计理念旨在通过多线程和向量化操作,最大化数据处理速度和效率,非常适合数据科学、金融分析和大数据处理领域。

Polars 的核心特点
-
高性能: -
Polars 能够处理大规模数据集,通过利用Rust的性能和并行计算特性,显著提高数据处理速度。 -
易用性: -
提供了与Pandas相似的API,使得用户可以快速上手并利用其高性能特性处理数据。 -
灵活的数据操作: -
支持宽范围的数据操作,包括但不限于筛选、排序、分组、聚合以及更复杂的连接操作。
最佳实践
安装方法
要开始使用 Polars,首先需要安装它。可以通过 pip 安装:
pip install polars
基础功能展示
读取数据
Polars 使得读取和处理数据变得非常简便。以下示例展示了如何通过数据做处理:
>>> import polars as pl
>>> df = pl.DataFrame(
... {
... "A": [1, 2, 3, 4, 5],
... "fruits": ["banana", "banana", "apple", "apple", "banana"],
... "B": [5, 4, 3, 2, 1],
... "cars": ["beetle", "audi", "beetle", "beetle", "beetle"],
... }
... )
>>> df.sort("fruits").select(
... "fruits",
... "cars",
... pl.lit("fruits").alias("literal_string_fruits"),
... pl.col("B").filter(pl.col("cars") == "beetle").sum(),
... pl.col("A").filter(pl.col("B") > 2).sum().over("cars").alias("sum_A_by_cars"),
... pl.col("A").sum().over("fruits").alias("sum_A_by_fruits"),
... pl.col("A").reverse().over("fruits").alias("rev_A_by_fruits"),
... pl.col("A").sort_by("B").over("fruits").alias("sort_A_by_B_by_fruits"),
... )

数据筛选
Polars 提供了强大的数据跨度支持功能,从df、excel甚至是sql都可以支持操作,下面是一个简单的例子:
>>> df = pl.scan_ipc("file.arrow")
>>> # 创建一个sql上下文,将其注册为表
>>> sql = pl.SQLContext(my_table=df)
>>> # 创建一个sql语句执行
>>> query = """
... SELECT sum(v1) as sum_v1, min(v2) as min_v2 FROM my_table
... WHERE id1 = 'id016'
... LIMIT 10
... """
>>> ## OPTION 1
>>> # 执行并实例化为DataFrame
>>> sql.execute(query, eager=True)
shape: (1, 2)
┌────────┬────────┐
│ sum_v1 ┆ min_v2 │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞════════╪════════╡
│ 298268 ┆ 1 │
└────────┴────────┘
高级功能展示
数据透视
Polars 的 LazyFrame 在执行查询之前需要静态地提供schema,数据透视操作的输出模式取决于数据,所以在不运行查询的情况下是无法确定模式的。
q = (
df.lazy()
.collect()
.pivot(index="foo", columns="bar", values="N", aggregate_function="first")
.lazy()
)
out = q.collect()
print(out)
shape: (3, 6)
┌─────┬──────┬──────┬──────┬──────┬──────┐
│ foo ┆ k ┆ l ┆ m ┆ n ┆ o │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ i64 ┆ i64 ┆ i64 ┆ i64 │
╞═════╪══════╪══════╪══════╪══════╪══════╡
│ A ┆ 1 ┆ 2 ┆ null ┆ null ┆ null │
│ B ┆ null ┆ null ┆ 2 ┆ 4 ┆ null │
│ C ┆ null ┆ null ┆ null ┆ null ┆ 2 │
└─────┴──────┴──────┴──────┴──────┴──────┘
最后看一下Polars在性能上的表现

小结
通过上述示例,我们可以看到 Polars 不仅性能强大,而且操作灵活,是处理大规模数据集的理想选择。无论是数据筛选、分组还是聚合操作,Polars 都能以极高的效率完成任务,是数据分析和数据科学领域的有力工具。
—— End ——
原文始发于微信公众号(木木夕咦):Polars,一个超酷的python库
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/248895.html