pandas和polars简单的对比分析

这篇具有很好参考价值的文章主要介绍了pandas和polars简单的对比分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

pandas

pandas是基于python写的,底层的数据结构是Numpy数据(ndarray)。pandas自身有两个核心的数据结构:DataFrame和Series,前者是二维的表格数据结构,后者是一维标签化数组。

polars

polars是用Rust(一种系统级编程语言,具有非常好的并发性和性能)写的,支持Python、Rust和NodeJS。主要特性有:

  1. 快:Polars从零开始,没有任何扩展依赖,底层设计(import速度非常快)。
  2. I/O:完美支持常见的数据存储层:本地、云存储、数据库。
  3. 使用简单:使用它的内置操作,Polars内部决定使用最有效的方法执行。
  4. 核外:Polars支持使用它的streaming API操作核外数据转化。基于磁盘的内存映射技术,大数据下允许数据在磁盘和内存之间进行高效的交换。可以处理比机器可用RAM更大的数据集
  5. 并行:Polars在不增加额外配置事,会充分利用机器可利用的cpu(可利用的所有核)。
  6. 矢量查询引擎:Polars使用Apache Arrow(一种列式数据格式,Arrow内存格式支持零拷贝读取,以实现闪电般快速的数据访问,而无需序列化开销)。以矢量的方式处理queries。它使用SIMD(单指令多数据,一种并行处理方式)优化CPU的利用。
pandas vs polars
  1. 性能:pandas提供了强大的数据分析功能,对处理小数据集更方便。polars利用多线程和内存映射技术,具有更快的速度,适合处理大型数据集。

  2. 内存使用:Pandas在加载数据时需要将其完全读入内存;polars支持streaming API操作核外数据转化,可以在处理大型数据集时降低内存使用,从而减少了内存限制。

  3. 数据操作:pandas具有丰富的数据操作和处理方法,使用DataFrame进行数据清洗、转换、分组、聚合等操作;Polars提供了类似于SQL的查询操作,使得对数据进行筛选、转换和聚合更加直观。

  4. 生态系统:pandas已经非常成熟,具有大量的学习文档、教程和扩展库;polars相对较新,对应的文档、教程等资源较少。

  5. 适用场景:pandas更适用于中小型数据集的数据分析和处理;polars更适用于大型数据集或追求更高性能的数据分析和处理场景。

运行时间对比

数据读取

# train.parquet: 2.35G
%time train_pd=pd.read_parquet('/Users/Downloads/archive/train.parquet') #Pandas dataframe 
%time train_pl=pl.read_parquet('/Users/Downloads/archive/train.parquet') #Polars dataframe

CPU times: user 3.85 s, sys: 8.69 s, total: 12.5 s
Wall time: 10.4 s
CPU times: user 3.07 s, sys: 2.22 s, total: 5.29 s
Wall time: 3.39 s

聚合操作

%%time
# pandas query 
nums = ["num_7", "num_8", "num_9", "num_10", "num_11", "num_12", "num_13", "num_14", "num_15"]
cats = ["cat_1", "cat_2", "cat_3", "cat_4", "cat_5", "cat_6"]
train_pd[nums].agg(['min','max','mean','median','std']) 

%%time
# Polars query 
train_pl.with_columns([ 
    pl.col(nums).min().suffix('_min'), 
    pl.col(nums).max().suffix('_max'), 
    pl.col(nums).mean().suffix('_mean'), 
    pl.col(nums).median().suffix('_median'), 
    pl.col(nums).std().suffix('_std'), 
])

CPU times: user 6.06 s, sys: 4.19 s, total: 10.3 s
Wall time: 15.8 s
CPU times: user 4.51 s, sys: 5.49 s, total: 10 s
Wall time: 8.09 s

查询后计算

# Pandas filter and select 
%time train_pd[train_pd['cat_1']==1][nums].mean()
# Polars filter and select 
%time train_pl.filter(pl.col("cat_1") == 1).select(pl.col(nums).mean()) 

CPU times: user 730 ms, sys: 1.65 s, total: 2.38 s
Wall time: 4.24 s
CPU times: user 659 ms, sys: 3.22 s, total: 3.88 s
Wall time: 2.12 s

分类再聚合

%time Function_3= train_pd.groupby(['user'])[nums].agg('mean')
%time Function_3 = train_pl.groupby('user').agg(pl.col(nums).mean())

CPU times: user 2.4 s, sys: 938 ms, total: 3.33 s
Wall time: 3.46 s
CPU times: user 6.92 s, sys: 2.68 s, total: 9.6 s
Wall time: 1.78 s

分组的列逐渐增加

# PANDAS: TESTING GROUPING SPEED ON 5 COLUMNS 
cols = []
for cat in ['user', 'cat_1', 'cat_2', 'cat_3', 'cat_4']:
    cols+=[cat] 
    st=time.time() 
    temp=train_pd.groupby(cols)['num_7'].agg('mean') 
    en=time.time() 
    print(f"{cat}:{round(en-st, 4)}s") 
    
# POLARS: TESTING GROUPING SPEED ON 5 COLUMNS 
cols = []
for cat in ['user', 'cat_1', 'cat_2', 'cat_3', 'cat_4']: 
    cols+=[cat] 
    st=time.time() 
    temp=train_pl.groupby(cols).agg(pl.col('num_7').mean()) 
    en=time.time() 
    print(f"{cat}:{round(en-st, 4)}s") 

每增加一列进行groupby后计算,所需要的时间:

cols 耗时
[“user”] 0.7666s
[“user”,“cat_1”] 1.8221s
[“user”,“cat_1”,“cat_2”] 9.4581s
[“user”,“cat_1”,“cat_2”,“cat_3”] 15.1409s
[“user”,“cat_1”,“cat_2”,“cat_3”,“cat_4”] 16.5913s
cols 耗时
[“user”] 0.498s
[“user”,“cat_1”] 1.1978s
[“user”,“cat_1”,“cat_2”] 3.4107s
[“user”,“cat_1”,“cat_2”,“cat_3”] 4.4749s
[“user”,“cat_1”,“cat_2”,“cat_3”,“cat_4”] 4.6821s

排序

cols=['user','num_8'] # columns to be used for sorting 
# Sorting in Pandas 
%time a = train_pd.sort_values(by=cols,ascending=True)
#Sorting in Polars 
%time b = train_pl.sort(cols,descending=False) 

CPU times: user 31.9 s, sys: 7.28 s, total: 39.2 s
Wall time: 46.2 s
CPU times: user 32.2 s, sys: 7.04 s, total: 39.2 s
Wall time: 11.6 s文章来源地址https://www.toymoban.com/news/detail-685780.html

到了这里,关于pandas和polars简单的对比分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pandas数据处理与分析教程:从基础到实战

    在数据分析和数据科学领域,Pandas是Python编程语言中最受欢迎的数据处理库之一。它提供了高效、灵活和易于使用的数据结构,使得数据的清洗、转换和分析变得简单而直观。本教程将详细介绍Pandas的各个方面,包括基本的数据结构、数据操作、数据过滤和排序、数据聚合与

    2024年02月10日
    浏览(44)
  • 数据分析基础之《pandas(7)—高级处理2》

    四、合并 如果数据由多张表组成,那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接     np.hstack() 竖直拼接     np.vstack() 两个都能实现     np.concatenate((a, b), axis=) 2、pd.concat([data1, data2], axis=1) 按照行或者列进行合并,axis=0为列索引,axis=1为

    2024年02月19日
    浏览(41)
  • 使用Pandas进行数据处理和分析的入门指南

    摘要:本文将介绍如何使用Python的Pandas库进行数据处理和分析,包括数据导入、数据清洗、数据转换和简单分析等方面的内容。 在数据科学和数据分析领域,数据处理是一个关键的步骤。Python的Pandas库提供了强大且易于使用的工具,使数据处理变得简单和高效。本文将引导您

    2024年02月10日
    浏览(76)
  • Python初学小知识(十四):数据分析处理库Pandas

    来源于这里。 很多情况下用的是pandas而不是numpy,因为前者是在后者的基础上又封装了一些操作,相当于做了函数简化。pandas主要是数据预处理用的比较多。 1.1 读取csv 任意一种格式,只要是以 , 为分隔符,就可以用 read_csv 读取: 先把文件打印出来看看结果: 结果是和表

    2023年04月25日
    浏览(49)
  • NumPy和Pandas库的基本用法,用于数据处理和分析

    当涉及到数据处理和分析时,NumPy和Pandas是两个非常常用的Python库。下面是它们的基本用法: NumPy(Numerical Python): 导入NumPy库:在代码中使用import numpy as np导入NumPy库。 创建NumPy数组:使用np.array()函数可以创建一个NumPy数组。例如,arr = np.array([1, 2, 3, 4, 5])创建一个包含整数

    2024年02月11日
    浏览(42)
  • 交互式数据分析和处理新方法:pandas-ai =Pandas + ChatGPT

    Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域,Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通过提供数据清理

    2024年02月03日
    浏览(45)
  • Python数据分析与应用 |第4章 使用pandas进行数据预处理 (实训)

    编号 性别 高血压 是否结婚 工作类型 居住类型 体重指数 吸烟史 中风 9046 男 否 是 私人 城市 36.6 以前吸烟 是 51676 女 否 是 私营企业 农村 N/A 从不吸烟 是 31112 男 否 是 私人 农村 32.5 从不吸烟 是 60182 女 否 是 私人 城市 34.4 抽烟 是 1665 女 是 是 私营企业 农村 24 从不吸烟 是

    2024年04月23日
    浏览(42)
  • 【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理

    目录 数据清洗和处理 1.处理缺失值 1.1 删除缺失值: 1.2  填充缺失值: 1.3 插值: 2 数据类型转换 2.1 数据类型转换 2.2 日期和时间的转换: 2.3 分类数据的转换: 2.4 自定义数据类型的转换: 3 数据去重 4 数据合并和连接 数据清洗和处理         在数据清洗和处理方面,

    2024年02月09日
    浏览(64)
  • Pandas+ChatGPT超强组合pandas-ai:交互式数据分析和处理新方法

    Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域,Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通过提供数据清理

    2024年02月12日
    浏览(55)
  • Pandas + ChatGPT 超强组合,pandas-ai :交互式数据分析和处理新方法

    Python Pandas是一个为Python编程提供数据操作和分析功能的开源工具包。这个库已经成为数据科学家和分析师的必备工具。它提供了一种有效的方法来管理结构化数据(Series和DataFrame)。 在人工智能领域,Pandas经常用于机器学习和深度学习过程的预处理步骤。Pandas通过提供数据清理

    2024年02月05日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包