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

[复制链接]
: Y, @; G! M( F* i1 K) e: H* d2 R
& h* m' `# {, ~! R9 ^
& [; _5 K$ q$ Q# J; V* ^
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
/ ?/ z' E4 k7 J' c, [% A
/ I+ i8 F, K& s: J6 X; T4 B5 i3 Q
" v# P5 i, v8 K% x
8 N- I) f! | h+ i

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

% c% R! f+ r F3 S$ g! j4 R& t

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

+ W4 }) @ |9 S6 p0 Z

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

/ B$ V" a* W6 ~7 j$ R

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

; M. [8 H# O, R8 N4 L) H

import cudf, io, requests

) o4 C, E5 H. L% }9 ~4 ]* K+ f

from io import StringIO

9 L! |6 I( O; ~3 l6 ?( L* P+ b

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

" W! b, R# E* |) A" O/ G0 m+ e: g2 W' B# y( ]

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

2 y6 m- X1 `8 m

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*1004 |) c3 K1 V+ k" C! ^$ h4 [/ g4 u ; E8 g$ z5 Q& E6 O ~- x

# display average tip by dining party size

, ?; D% t1 G: N

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

$ P( b! l# I. v6 ?( w( p: } 8 b9 s/ ?, A9 p9 K# [+ V

得到的输出为:

4 G: `2 o1 K) H3 S/ S& o& k2 G8 }" O5 Q8 L3 I) R3 Y3 z

size

% n" Z& J4 S; A% y 7 ^! q; s; O& ?2 U' d

1    21.729201548727808

, X) S! o% P% ]* y $ |5 S6 o" i% M( c

2    16.571919173482897

5 J9 E% R& h3 O : s5 X! {3 m1 K/ D

3    15.215685473711837

8 {8 W! D( S" k& h : u3 ^% ?. r( q. r4 S0 j' ^

4    14.594900639351332

7 t& S4 n) g! l! `; j 5 z0 L% p4 u/ U8 P2 O4 ^3 x0 q0 ^

5    14.149548965142023

# E! s V% N# `- l2 h + j" ?$ K. B& @0 k% q6 J

6    15.622920072028379

- ^- X- _& I# V" w; s+ o4 _ & M& U7 M- z+ v0 \& \

Name: tip_percentage, dtype: float64

! a4 R' \' L% c: A - k" E6 O, ]" k3 K* u, ?

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

$ o1 V4 H9 e/ S; H* G

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

! V3 ?5 @- N4 ~! j

安装

4 I; `" u/ [" Y X# k' D

conda

% Z$ v6 ?6 q) |4 A7 s. Q

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

% r9 h0 A' S. [7 m , X0 k% S: z% T& i* M

# for CUDA 9.2

( R& e' |1 U. t9 Y/ @1 q

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

   cudf=0.6 python=3.6 cudatoolkit=9.2$ W) B" ~3 ^$ ^8 N$ g " j9 O. \, D/ Y7 @, h( K

# or, for CUDA 10.0

& q/ M" C8 a+ i9 B4 x( W, L5 X

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

7 D+ B$ P+ }& A! v+ F

   cudf=0.6 python=3.6 cudatoolkit=10.0

$ y% Q) M# X! K7 u/ q4 J ( U2 C$ N# d; \9 U1 f

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

# i* U# V/ |; c( l/ o9 ^3 M, o

Pip

) n% r$ ?; s0 r, A

cuDF 也可以用 PyPi 安装。

( C7 N/ Z! ?# J: H. f) ]9 V8 r / Y: [4 ]5 w- W3 w4 ^

# for CUDA 9.2

6 h; M/ N% h( f K* g5 M

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

+ E8 M/ @$ i1 G4 a1 e/ |1 o7 Z( w9 n7 }, ?* _

# or, for CUDA 10.0

# a- b; a% _7 i9 d, U) I

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

% }- |( K# q& F0 E6 V" w0 { ) W P2 k# q: ~5 |8 q- H

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

4 |5 A5 |, m# T, _: x

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

, U2 Z, F% r- N. Z' O: ^0 V0 h# v

雷锋网雷锋网

( c+ R. R N/ M& }) P ; b5 Y) T8 h1 Q" N4 ? ( _- W; U& h i. I2 G1 v% h9 ?7 w6 ~- c* k- r" q' j, b, P. o 1 ~8 R+ b" i; J+ I* ]- b+ ?: b
& [# A2 j: k5 m" Y7 U, R3 V
! d# @7 m1 Q1 x
$ C O' `. }9 }4 \8 @0 x. B, \0 U6 V* q6 e. k5 a, ?% O- Y% g2 W 9 G- L' Q" Y Y# M9 f/ x y& m' G* ?6 L# `0 y+ _# k0 ] 3 [+ {* Q, K/ {4 H, v$ }# W
回复

举报 使用道具

相关帖子

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