掌握python polars库进行高效高速的数据处理。

 更新时间:2024年01月07日 11:37:00   作者:小寒聊python  
这篇文章主要介绍了python polars库进行高效高速的数据处理技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

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库数据处理的资料请关注脚本之家其它相关文章!

相关文章

最新评论