赞
踩
Polars是一个用于数据处理和分析的快速、内存高效的Rust语言编写的数据操作库。它提供了类似于Pandas的API,但具有更好的性能和内存使用效率。本文将介绍Polars库的基本使用说明,并通过具体的代码案例展示其功能和特性。
快速:Polars自诞生之初便聚焦于性能优化。它采用了Rust编写的多线程查询引擎,确保出色的并行处理效率。同时,其矢量化与列式处理方式,在现代处理器上实现了缓存一致性算法(Cache-Coherent Algorithms),从而实现了卓越的性能表现。
简单:Polars的表达式直观易懂,不仅高效而且可读性强。
对于熟悉数据处理的人而言,使用Polars将感觉非常顺畅,哪怕是初学者也能快速上手。
开源:Polars是开源的,而且将始终保持开源。在积极的开发者社区推动下,鼓励每个人添加新功能并贡献自己的力量。Polars在MIT许可下免费使用。
首先,我们需要安装Polars库。你可以通过以下命令使用pip安装Polars:
pip install polars
Polars支持常见文件格式(例如csv、json、parquet)、云存储(S3、Azure Blob、BigQuery)和数据库(例如postgres、mysql)的读取和写入。下面我们展示了读取和写入到磁盘的概念。
import polars as pl
from datetime import datetime
df = pl.DataFrame(
{
"integer": [1, 2, 3],
"date": [
datetime(2025, 1, 1),
datetime(2025, 1, 2),
datetime(2025, 1, 3),
],
"float": [4.0, 5.0, 6.0],
"string": ["a", "b", "c"],
}
)
print(df)
# 从CSV文件加载数据
df = pl.read_csv('data.csv')
# 保存DataFrame到CSV文件
df.write_csv('output.csv')
df = pl.read_parquet("docs/data/path.parquet")
df = pl.DataFrame({"foo": [1, 2, 3], "bar": [None, "bak", "baz"]}) df.write_parquet("docs/data/path.parquet")
df = pl.scan_parquet("docs/data/path.parquet")
可以使用类似于Pandas的语法选择和过滤数据。
# 选择特定列
df.select(pl.col("*"))
# 根据条件过滤数据
df.select(pl.col("a", "b"))
Basic operators - Polars user guide
Column selections - Polars user guide
df.filter( pl.col("c").is_between(datetime(2025, 12, 2), datetime(2025, 12, 3)), )、
df.filter((pl.col("a") <= 3) & (pl.col("d").is_not_nan()))
with_columns
用于创建新的列。我们创建了两个新列e和b+42。首先,我们将列b中的所有值相加,并将结果存储在列e中。然后,我们将42加到列b的值上,创建一个新列b+42来存储这些结果。
df.with_columns(pl.col("b").sum().alias("e"), (pl.col("b") + 42).alias("b+42"))
# 创建DataFrame
df2 = pl.DataFrame( { "x": range(8),
"y": ["A", "A", "A", "B", "B", "C", "X", "X"], } )
df2.group_by("y", maintain_order=True).len()
df2.group_by("y", maintain_order=True).agg( pl.col("*").count().alias("count"), pl.col("*").sum().alias("sum"), )
df = pl.DataFrame({"a": range(8),
"b": np.random.rand(8),
"d": [1, 2.0, float("nan"), float("nan"), 0, -5, -42, None]})
df2 = pl.DataFrame({"x": range(8),
"y": ["A", "A", "A", "B", "B", "C", "X", "X"]})
joined = df.join(df2, left_on="a", right_on="x")
print(joined)
stacked = df.hstack(df2) print(stacked)
通过本文的介绍,你现在应该对Polars库有了一个基本的了解,并且知道如何使用它进行数据处理和分析。Polars提供了丰富的功能和高性能,使得数据科学家和工程师能够更加高效地处理大规模数据集。如果你对Polars感兴趣,可以进一步阅读官方文档以深入了解其更多功能和特性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。