Pandas升级版 Polars库简介及教程

Python库Polars简介及教程

简介

Polars是一个高性能的DataFrame库,专为处理大型数据集和进行复杂数据操作而设计。与传统的pandas库相比,Polars在速度和内存效率方面具有显著优势。这得益于其底层基于Apache Arrow的列式存储格式和Rust编写的核心引擎,使得Polars在处理数据时更加高效。

主要特点
  1. 高性能:通过并行处理和优化的数据结构,Polars能够极大地提升数据操作速度。
  2. 低内存消耗:利用Apache Arrow的列式存储格式,Polars在处理大数据时内存占用更低。
  3. 简洁API:提供类似pandas的API,易于上手,同时支持更多高级功能。
  4. 灵活性:支持复杂的数据操作和查询,适合大数据分析和机器学习前的数据处理。

为什么要放弃Pandas改用Polars?

1. 性能和内存效率

Polars 采用Rust编写和Apache Arrow列式存储格式,支持并行计算,这使得它在处理大数据集时表现出色。相比之下,Pandas 使用Python编写,虽然功能全面,但在处理大数据时性能和内存使用效率较低。

2. 计算速度

Polars的并行计算能力使得在处理数据时更快,尤其是在执行复杂的查询和数据操作时。Pandas则是单线程计算,在大数据集下可能会遇到性能瓶颈。

3. API设计

Polars提供类似Pandas的API,但支持链式操作和懒加载,这使得代码更加简洁和高效。虽然Pandas的API设计成熟且功能全面,但在某些复杂操作上需要更多的代码来实现。

4. 内存管理

Polars利用Apache Arrow的列式存储格式,能够有效降低内存消耗。这对于处理内存受限的大数据集特别有用。Pandas则采用行式存储,在处理大数据时内存使用较高。

5. 灵活性和扩展性

Polars不仅适合数据分析,还能轻松扩展到机器学习前的数据处理。而且,Polars与其他高性能计算工具(如Apache Arrow)有很好的兼容性。Pandas虽然也很灵活,但在某些高性能需求的场景下,Polars表现更为出色。

安装

要安装Polars,可以使用pip:

pip install polars

教程

以下是如何使用Polars进行基本数据操作的教程。

1. 导入库

In [1]:

import polars as pl
2. 创建DataFrame

创建一个简单的DataFrame:

In [2]:

# 创建DataFrame
data = {
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["New York", "Los Angeles", "Chicago"]
}
df = pl.DataFrame(data)
print(df)
shape: (3, 3)
┌─────────┬─────┬─────────────┐
│ name    ┆ age ┆ city        │
│ ---     ┆ --- ┆ ---         │
│ str     ┆ i64 ┆ str         │
╞═════════╪═════╪═════════════╡
│ Alice   ┆ 25  ┆ New York    │
│ Bob     ┆ 30  ┆ Los Angeles │
│ Charlie ┆ 35  ┆ Chicago     │
└─────────┴─────┴─────────────┘
3. 数据选择

选择DataFrame中的特定列:

In [3]:

age_city_df = df.select(["age", "city"])
print(age_city_df)
shape: (3, 2)
┌─────┬─────────────┐
│ age ┆ city        │
│ --- ┆ ---         │
│ i64 ┆ str         │
╞═════╪═════════════╡
│ 25  ┆ New York    │
│ 30  ┆ Los Angeles │
│ 35  ┆ Chicago     │
└─────┴─────────────┘
4. 过滤数据

根据条件过滤数据:

In [4]:

# 过滤数据
filtered_df = df.filter(pl.col("age") > 30)
print(filtered_df)
shape: (1, 3)
┌─────────┬─────┬─────────┐
│ name    ┆ age ┆ city    │
│ ---     ┆ --- ┆ ---     │
│ str     ┆ i64 ┆ str     │
╞═════════╪═════╪═════════╡
│ Charlie ┆ 35  ┆ Chicago │
└─────────┴─────┴─────────┘
5. 数据聚合

对数据进行聚合操作:

In [5]:

# 聚合数据
grouped_df = df.group_by("city").agg([
    pl.col("age").mean().alias("average_age")
])
print(grouped_df)
shape: (3, 2)
┌─────────────┬─────────────┐
│ city        ┆ average_age │
│ ---         ┆ ---         │
│ str         ┆ f64         │
╞═════════════╪═════════════╡
│ Chicago     ┆ 35.0        │
│ New York    ┆ 25.0        │
│ Los Angeles ┆ 30.0        │
└─────────────┴─────────────┘
6. 数据连接

连接两个DataFrame:

In [6]:

# 创建第二个DataFrame
data2 = {
    "city": ["New York", "Los Angeles", "Chicago"],
    "population": [8000000, 4000000, 2700000]
}
df2 = pl.DataFrame(data2)

# 连接DataFrame
joined_df = df.join(df2, on="city")
print(joined_df)
shape: (3, 4)
┌─────────┬─────┬─────────────┬────────────┐
│ name    ┆ age ┆ city        ┆ population │
│ ---     ┆ --- ┆ ---         ┆ ---        │
│ str     ┆ i64 ┆ str         ┆ i64        │
╞═════════╪═════╪═════════════╪════════════╡
│ Alice   ┆ 25  ┆ New York    ┆ 8000000    │
│ Bob     ┆ 30  ┆ Los Angeles ┆ 4000000    │
│ Charlie ┆ 35  ┆ Chicago     ┆ 2700000    │
└─────────┴─────┴─────────────┴────────────┘
结论

Polars通过其高性能和低内存消耗,成为处理大数据集和进行复杂数据操作的理想选择。无论是基本的数据操作,还是复杂的数据查询和聚合,Polars都提供了强大的功能和简洁的API。

  • 30
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值