0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python GPU DataFrame库cuDF介绍

数据分析与开发 来源:coggle 2023-12-20 15:05 次阅读

cuDF (Pandas GPU 平替),用于加载、连接、聚合、过滤和其他数据操作。

cuDF介绍

cuDF是一个基于Apache Arrow列内存格式的Python GPU DataFrame库,用于加载、连接、聚合、过滤和其他数据操作。cuDF还提供了类似于pandas的API

wKgaomWCkuaAR8bUAAGFfdDehFQ338.jpg

相关框架介绍

cuDF:cuDF是一个Python GPU DataFrame库,它基于Apache Arrow的列式内存格式,用于加载、连接、聚合、过滤和以类似pandas的DataFrame风格API操纵表格数据。它允许数据工程师和数据科学家通过类似于pandas的API轻松加速其工作流程,而无需深入研究CUDA编程的细节。cuDF的设计旨在在GPU上处理大规模数据集,提供了对数据处理任务的高性能支持。

Dask:Dask是一个灵活的Python并行计算库,使得在工作流程中平滑而简单地实现规模化。在CPU上,Dask使用Pandas来并行执行DataFrame分区上的操作。它允许用户以更大规模处理数据,充分发挥计算资源,而无需对代码进行大规模更改。

Dask-cuDF:Dask-cuDF在需要的情况下扩展Dask,以允许其DataFrame分区使用cuDF GPU DataFrame而不是Pandas DataFrame进行处理。例如,当调用dask_cudf.read_csv(...)时,集群的GPU通过调用cudf.read_csv()来执行解析CSV文件的工作。这使得在GPU上利用cuDF的高性能数据处理能力,从而加速大规模数据处理任务。

cuDF和Pandas比较

cuDF是一个DataFrame库,它与Pandas API密切匹配,但直接使用时并不是Pandas的完全替代品。在API和行为方面,cuDF和Pandas之间存在一些差异。以下是cuDF和Pandas之间的相似之处和差异的对比:

支持的操作:

cuDF支持许多与Pandas相同的数据结构和操作,包括Series、DataFrame、Index等,以及它们的一元和二元操作、索引、过滤、连接、分组和窗口操作等。

数据类型:

cuDF支持Pandas中常用的数据类型,包括数值、日期时间、时间戳、字符串和分类数据类型。此外,cuDF还支持用于十进制、列表和“结构”值的特殊数据类型。

缺失值:

与Pandas不同,cuDF中的所有数据类型都是可为空的,意味着它们可以包含缺失值(用cudf.NA表示)。

迭代:

在cuDF中,不支持对Series、DataFrame或Index进行迭代。因为在GPU上迭代数据会导致极差的性能,GPU优化用于高度并行操作而不是顺序操作。

结果排序:

默认情况下,cuDF中的join(或merge)和groupby操作不保证输出排序。与Pandas相比,需要显式传递sort=True或在尝试匹配Pandas行为时启用mode.pandas_compatible选项。

浮点运算:

cuDF利用GPU并行执行操作,因此操作的顺序不总是确定的。这影响浮点运算的确定性,因为浮点运算是非关联的。在比较浮点结果时,建议使用cudf.testing模块提供的函数,允许您根据所需的精度比较值。

列名:

与Pandas不同,cuDF不支持重复的列名。最好使用唯一的字符串作为列名。

没有真正的“object”数据类型:

与Pandas和NumPy不同,cuDF不支持“object”数据类型,用于存储任意Python对象的集合。

.apply()函数限制:

cuDF支持.apply()函数,但它依赖于Numba对用户定义的函数(UDF)进行JIT编译并在GPU上执行。这可以非常快速,但对UDF中允许的操作施加了一些限制。

何时使用cuDF和Dask-cuDF

cuDF:

当您的工作流在单个GPU上足够快,或者您的数据在单个GPU的内存中轻松容纳时,您会希望使用cuDF。

当数据量不大,可以在单个GPU内存中处理时,cuDF提供了对单个GPU上高性能数据操作的支持。

Dask-cuDF:

当您希望在多个GPU上分布您的工作流程时,或者您的数据量超过了单个GPU内存的容量,或者希望同时分析许多文件中分布的数据时,您会希望使用Dask-cuDF。

Dask-cuDF允许您在分布式GPU环境中进行高性能的数据处理,特别是当数据集太大,无法容纳在单个GPU内存中时。

cuDF代码案例



审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4736

    浏览量

    128933
  • 编程
    +关注

    关注

    88

    文章

    3615

    浏览量

    93717
  • 数据结构
    +关注

    关注

    3

    文章

    573

    浏览量

    40128
  • python
    +关注

    关注

    56

    文章

    4796

    浏览量

    84668

原文标题:再见Pandas,又一数据处理神器!

文章出处:【微信号:DBDevs,微信公众号:数据分析与开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    常用的Python图像处理介绍

    本文主要介绍了一些简单易懂最常用的 Python 图像处理
    的头像 发表于 08-19 10:54 2032次阅读

    动态封装成python模块的方法

    之前的文章 将静态封装成 python 模块中讲解了如何将静态封装成 python 模块,静态封装相对来说还是有点复杂,今天来
    发表于 07-13 15:24 646次阅读

    OpenHarmony开源GPUMesa3D适配说明

    : Dayu200-rk3568 一、背景介绍 OpenHarmony对图形的渲染,支持CPU和GPU两种方式。为了支持流畅的用户体现,GPU适配是必不可少的。OpenHarmony使用GPU
    发表于 12-25 11:38

    PyODPS DataFrame:统一的数据查询语言

    摘要: 前几天,PyODPS发布了0.7版本,这篇文章给大家介绍下PyODPS新版本带来的重要特性。 之前也有若干篇文章介绍过了,我们PyODPS DataFrame是延迟执行的,在调用立即执行
    发表于 01-26 14:55

    PyODPS 中使用 Python UDF

    摘要: PyODPS 中使用 Python UDF 包含两方面,一个是直接使用,也就是在 MaxCompute SQL 中使用;一个是间接的方式,也就是 PyODPS DataFrame,这种方式你
    发表于 01-29 14:29

    Python机器学习常用

    是同类API中最好的选择之一。以上是Python开发工程师必知十大机器学习,除此之外,还有OverFeat、Nolearn以及Decaf等机器学习,在此就不一一介绍了,感兴趣的可以
    发表于 03-26 16:29

    Python存储数据详解

    =pd.DataFrame(columns=name,date=list)test.to_csv(‘E:/test.csv’)3. MySQL数据MySQL数据库存储方式是使用Python数据存储最常
    发表于 03-29 15:47

    基于DataFrame的图处理GraphFrames

    近日,Databricks和UC Berkeley及MIT一起为Apache Spark设计了一个图处理GraphFrames。它既能利用DataFrame良好的扩展性和强大的性能,同时也为
    发表于 10-11 10:36 0次下载
    基于<b class='flag-5'>DataFrame</b>的图处理<b class='flag-5'>库</b>GraphFrames

    Python的常见详细资料介绍

    由于设计者和开源社区的共同努力,在python中有大量优秀的可以被直接调用以高效地完成不同需求的工作。这里列举一些常见常用的
    发表于 06-16 16:37 29次下载
    <b class='flag-5'>Python</b>的常见<b class='flag-5'>库</b>详细资料<b class='flag-5'>介绍</b>

    如何安装常用Python

    使用常用的Python是非常重要的一步。本文将介绍如何安装常用的Python,以帮助您在Python
    的头像 发表于 04-14 12:11 1162次阅读

    TSMaster小功能—Python小程序如何导入外部

    今天给大家介绍TSMaster功能之Python小程序如何导入外部。通过在TSMaster默认的解析器路径下导入外部介绍,以便我们去使
    的头像 发表于 08-14 10:06 1189次阅读
    TSMaster小功能—<b class='flag-5'>Python</b>小程序如何导入外部<b class='flag-5'>库</b>

    python有什么用 如何用python创建数据

    开发、游戏开发、机器学习、自然语言处理等领域。 在本文中,我们将介绍如何使用Python创建数据。首先,让我们了解一下什么是数据。 什么是数据
    的头像 发表于 08-28 16:41 1176次阅读

    python读取数据数据 python查询数据 python数据连接

    ,获取数据中的数据,并对数据进行增删改查等操作。本文将详细介绍Python如何连接数据、读取数据数据以及如何进行查询操作。 一、
    的头像 发表于 08-28 17:09 1826次阅读

    如何实现Pandas的DataFrame转换交互式表格

    Pivottablejs是一个通过IPython widgets集成到Python中的JavaScript,允许用户直接从DataFrame数据创建交互式和灵活的汇总报表。可以进行高效、清晰的数据分析和表示,帮助将数据从Pan
    的头像 发表于 11-21 16:15 872次阅读
    如何实现Pandas的<b class='flag-5'>DataFrame</b>转换交互式表格

    RAPIDS cuDF将pandas提速近150倍

    在 NVIDIA GTC 2024 上,NVIDIA 宣布,RAPIDS cuDF 当前已能够为 950 万 pandas 用户带来 GPU 加速,且无需修改代码。
    的头像 发表于 11-20 09:52 173次阅读
    RAPIDS <b class='flag-5'>cuDF</b>将pandas提速近150倍