收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

cuDF:加快数据处理流程的DataFrame库

[复制链接]
: x- q$ _6 X& Q8 O1 R0 p0 Z& b
7 ~* w ?- |1 F& f6 F
$ s9 l% e7 N" ]# r5 E
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
9 y3 \' P+ E! [& M* {7 _
, x) A2 Z0 `, ^6 {% H4 U5 G8 Q7 I
& v: W2 C0 O: K" K9 T
- X/ ?% P% k0 T* ^6 h( |7 q

雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。

/ Y( c6 {9 x( l7 R: d

cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。

2 r/ ?6 I, t" v3 e3 J6 s0 Q7 T

cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。

: N/ Z+ s5 n" e+ |; p. v

例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:

4 f1 K7 l3 k/ L8 @

import cudf, io, requests

% ] z+ V% \3 |( N( Q; o/ T

from io import StringIO

V. E9 B1 o4 n' P: j2 B/ N& S. P

url="https://github.com/plotly/datasets/raw/master/tips.csv"

% n( D, K6 A" `+ x8 K+ m# L( X0 z& h+ ]) z4 ~, E; V

content = requests.get(url).content.decode(utf-8)

( A# E% e4 {; D* a$ Q

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*1000 z& L: ^0 I0 _5 Q9 Z( {4 g - z# X# k/ _6 b! \6 y+ B

# display average tip by dining party size

* u3 @2 _3 R5 j D% J% a6 T4 S

print(tips_df.groupby(size).tip_percentage.mean())

5 f0 N6 B7 E/ r" x( Y# B : Z4 D% D' r5 Z+ x% t

得到的输出为:

* Z4 C9 {2 Z: p( ^ " s1 g6 H4 U9 A

size

& D/ T8 j" X P6 j$ f0 P3 f* N( n6 _; B/ B/ C( K0 R3 _ f5 Y$ ?

1    21.729201548727808

: C0 O) G1 {( R% b) |! F1 Q& \! I 1 {% O6 E( G0 }: y- h+ V

2    16.571919173482897

5 ?! K+ d" k( j5 |, p 6 B8 d# X0 m7 R( z3 m9 o" {

3    15.215685473711837

& m! h8 B8 [ d6 b9 i. h% J - H9 g/ n# _. s& O3 L U

4    14.594900639351332

4 M: M- g! i, i- t & H# m, Q* O! w& R, d" E8 p

5    14.149548965142023

% ^" y* l9 E6 F% j2 [" S5 v( o9 Y5 f: l ^' ^2 F- u

6    15.622920072028379

4 s* G, \+ h4 C' M5 j) _. o8 z # a7 c5 l* s+ \# u6 w

Name: tip_percentage, dtype: float64

9 x$ Y, }/ m1 f1 G 3 f# D1 \0 y! ~

想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。

4 k2 s7 Q8 g0 O9 [0 A

那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。

. |- k3 v& C/ u9 f6 Z7 C; m* b( k0 z! X

安装

. p- [/ O/ r1 y; m( h) L1 G

conda

$ Q; m+ j3 ~) a8 p4 P" z

cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:

7 y" w+ F+ ?9 Y4 R1 G" c6 l # [& ~* X) W% i5 l; N0 U

# for CUDA 9.2

b* ~6 Z! |9 z( V2 O3 R- H$ q

conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \

   cudf=0.6 python=3.6 cudatoolkit=9.2( Q. Z8 c2 z; Q" A3 O5 v ' A( Q+ b4 z* n. i

# or, for CUDA 10.0

0 m8 p& O8 Y9 @$ ?# O2 W

conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \

3 v# H4 ?! Z- C; a B1 X" f

   cudf=0.6 python=3.6 cudatoolkit=10.0

3 L- q3 T, X9 O# L1 o$ e2 H$ F, q) H

我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。

* Y2 z) ?, I) j5 d' V' [& h

Pip

5 W* J: n8 U. u, l' M8 ^

cuDF 也可以用 PyPi 安装。

0 U, V- ?; r. g6 O7 m7 ~6 p 9 C8 l, N* D H# `" x+ J0 q( n

# for CUDA 9.2

' P4 z$ m! l8 `/ t7 M; _, X, i

python3.6 -m pip install cudf-cuda92==0.6

3 c, F) l5 ~& j. J5 K4 O: } " r6 i+ @! J( k

# or, for CUDA 10.0

& _$ D8 p* I4 Z3 c' b

python3.6 -m pip install cudf-cuda100==0.6

1 E* Q, B% _- g $ o4 y% K/ g; N1 u1 l

注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。

2 z( m- |& t- h2 _$ J

via : https://github.com/rapidsai/cudf

1 |& c: ^8 J1 l9 M

雷锋网雷锋网

2 [1 _1 Z: U5 u2 k * w+ W$ J( }' T1 B' f x. h! @' \- ~6 N Q f2 n8 V; o" S3 L ! }( ]" F2 \+ F. N" d k8 O * X/ p2 D q* ?0 y
. b) ~( p9 N' P9 Y/ @% m
# o; Z, ]3 Y) Z+ |4 O+ X& k
: W6 h {% M" W$ e a , K. s8 V4 p/ w# P) @7 u" z0 h! l& m3 O2 s4 h- i7 y& [0 H . c5 B2 Z v( C- C3 U$ u! K; F6 W - h6 W+ h, N" b b; N) _
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
礼子
活跃在2026-2-6
快速回复 返回顶部 返回列表