问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

超越Pandas:数据处理利器Polars的快速入门指南

创作时间:
作者:
@小白创作中心

超越Pandas:数据处理利器Polars的快速入门指南

引用
CSDN
1.
https://blog.csdn.net/WHYbeHERE/article/details/137153414

Polars是一个用Rust语言编写的数据处理库,它提供了类似于Pandas的API,但具有更好的性能和内存使用效率。本文将通过具体的代码案例,帮助读者快速掌握Polars的基本使用方法。

简介

Polars是一个用于数据处理和分析的快速、内存高效的Rust语言编写的数据操作库。它提供了类似于Pandas的API,但具有更好的性能和内存使用效率。本文将介绍Polars库的基本使用说明,并通过具体的代码案例展示其功能和特性。

Polas的优势


快速:Polars自诞生之初便聚焦于性能优化。它采用了Rust编写的多线程查询引擎,确保出色的并行处理效率。同时,其矢量化与列式处理方式,在现代处理器上实现了缓存一致性算法(Cache-Coherent Algorithms),从而实现了卓越的性能表现。

简单:Polars的表达式直观易懂,不仅高效而且可读性强。
对于熟悉数据处理的人而言,使用Polars将感觉非常顺畅,哪怕是初学者也能快速上手。

开源:Polars是开源的,而且将始终保持开源。在积极的开发者社区推动下,鼓励每个人添加新功能并贡献自己的力量。Polars在MIT许可下免费使用。

与pandas相比,Polars可以实现超过30倍的性能提升。

代码操作详解

安装Polars

首先,我们需要安装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

# 从CSV文件加载数据
df = pl.read_csv('data.csv')
# 保存DataFrame到CSV文件
df.write_csv('output.csv')
  

Parquet

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")
  

IO - Polars user guide

数据处理

选择

可以使用类似于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"), )
  

Join

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)
  

Joins - Polars user guide

concat

stacked = df.hstack(df2) print(stacked)
  

结语

通过本文的介绍,你现在应该对Polars库有了一个基本的了解,并且知道如何使用它进行数据处理和分析。Polars提供了丰富的功能和高性能,使得数据科学家和工程师能够更加高效地处理大规模数据集。如果你对Polars感兴趣,可以进一步阅读官方文档以深入了解其更多功能和特性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号