掌握python polars库进行高效高速的数据处理。
作者:小寒聊python
python库polars
https://github.com/pola-rs/polars
Polars 是一个使用 Rust 编写的高性能数据处理库,它提供了一个类似于 pandas 的 API,但专注于高效和高速的数据处理。
Polars 的语法与 Pandas 非常相似,因此从一个库到另一个库的转换非常简单。
特点
高性能:Polars 的底层是用 Rust 编写的,这使得它在处理大数据集时能够提供出色的性能。
内存效率:它使用高效的内存管理技术,减少内存占用,特别是在处理大型数据集时。
易用 API:Polars 的 API 设计类似于 pandas,这对于那些已经熟悉 pandas 的用户来说,学习成本较低。
多线程和向量化操作:通过优化多线程处理和向量化操作,Polars 能够进一步提高处理数据的速度。
丰富的数据操作功能:提供了广泛的数据操作功能,包括过滤、排序、分组、聚合等。
矢量化查询引擎:Polars 使用 Apache Arrow(一种列式数据格式)以矢量化方式处理你的查询。
Polars 提供了两种主要的 API
DataFrame API 和 Lazy API。这两种 API 都支持丰富的数据操作功能,但它们在处理数据的方式上有所不同。
DataFrame API
这是 Polars 的立即执行 API,类似于 pandas 的使用方式。
当使用 DataFrame API 时,所有的数据操作(如筛选、排序、聚合)都会立即执行并返回结果。
这种方式直观且易于调试,因为每个步骤的输出都可以立即查看。
适用于数据集较小,或者需要立即反馈的场景。
Lazy API
Lazy API 基于延迟执行的概念,这意味着数据操作不会立即执行。
在这种模式下,操作会被视为一系列的指令或计划,在实际需要结果时才执行。
这允许 Polars 对整个操作流程进行优化,比如合并多个步骤、消除不必要的计算,从而提高整体效率。
Lazy API 特别适合处理大型数据集,因为它可以减少内存占用并提高性能
库的安装
我们可以直接使用 pip 来进行库的安装。
pip install polars
性能对比
首先,我们创建一个大型的虚拟数据集,它包括 100 万行和 51 列。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(0, 100, size=(1000000, 50))) df = df.rename(columns={i:f"x_{i} " for i in range(50)}) df["category"] = ["A", "B", "C", "D"] * 2500000 df.to_csv('data.csv')
加载数据集
import polars as pl df_pl = pl.read_csv("data.csv") df_pd = pd.read_csv("data.csv")
过滤操作
我们将对操作进行计时,以便我们可以比较 polars 和 Pandas 的性能。
%time df_pd_d = df[df["category"]=="D"] %time df_pl_d = df_pl.filter(pl.col("category")=="D")
pandas 使用的时间是 231 ms,而 polars 只需要 70.6 ms
多条件过滤
%time df_pd_d=df_pd[(df_pd["category"] == "D") & (df_pd["x_1 "] > 10)] %time df_pl_d=df_pl.filter((pl.col("category")=="D") & (pl.col("x_1 ") > 10))
以上就是掌握python polars库进行高效高速的数据处理。的详细内容,更多关于python polars库数据处理的资料请关注脚本之家其它相关文章!