Polars,一个超酷的python库

Polars,一个超酷的python库

大家好,我是木木。

今天给大家分享一个超酷的 Python

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

Polars,一个超酷的python库
图源网络

Polars 的核心特点

  • 高性能:
    • Polars 能够处理大规模数据集,通过利用Rust的性能和并行计算特性,显著提高数据处理速度。
  • 易用性:
    • 提供了与Pandas相似的API,使得用户可以快速上手并利用其高性能特性处理数据。
  • 灵活的数据操作:
    • 支持宽范围的数据操作,包括但不限于筛选、排序、分组、聚合以及更复杂的连接操作。

最佳实践

安装方法

要开始使用 Polars,首先需要安装它。可以通过 pip 安装:

pip install polars

基础功能展示

读取数据

Polars 使得读取和处理数据变得非常简便。以下示例展示了如何通过数据做处理:

>>> import polars as pl
>>> df = pl.DataFrame(
...     {
...         "A": [12345],
...         "fruits": ["banana""banana""apple""apple""banana"],
...         "B": [54321],
...         "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,一个超酷的python库
图源网络

数据筛选

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: (12)
 ┌────────┬────────┐
 │ 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: (36)
┌─────┬──────┬──────┬──────┬──────┬──────┐
│ 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,一个超酷的python库
图源网络

小结

通过上述示例,我们可以看到 Polars 不仅性能强大,而且操作灵活,是处理大规模数据集的理想选择。无论是数据筛选、分组还是聚合操作,Polars 都能以极高的效率完成任务,是数据分析和数据科学领域的有力工具。



—— End ——



原文始发于微信公众号(木木夕咦):Polars,一个超酷的python库

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/248895.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!