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

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

[复制链接]
7 j* |' c: n* N" H( @% I
2 m V" y$ X5 K" G# { Z
) [) y: G' ~) ~& T6 a3 g- H
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
: f8 t; x7 M5 V# h$ ~; ^% Y$ |3 ]( W
, I( u9 b# t6 R0 \% p: ]' `
1 b# b# a( z9 d2 V) O1 }
* q: g+ u8 @. y- T8 P' {3 I: {

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

/ E8 h4 ^4 _0 V2 O! K: _" s

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

+ e3 D5 [$ p! M) u0 z# t6 J

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

+ ?8 p0 H( F+ _; v

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

% u7 S% |, H9 ~3 a$ h$ ~8 D: Y

import cudf, io, requests

1 E' U: ~8 v( o- z; W3 @

from io import StringIO

/ l- n' S% G- ~

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

, l3 a5 \3 N$ x # f; x! n# b* i9 g+ M; @# {

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

) m2 U* C) L. H8 r" Z

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*1004 i$ H+ x& x: _$ i* ~) { 5 O8 q, g: x3 A" ?

# display average tip by dining party size

0 Z% v& g3 W. f+ R' b7 f$ T0 ?( w

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

/ G8 X! e/ O1 W1 N- W1 \ # Q) z- M& n+ [) \' l, K5 _5 C

得到的输出为:

. p: |. n1 t1 ~, { 5 p! v+ Z2 `3 X0 s5 V

size

2 S& ~; G7 L% _! q6 I# ? ) q0 |! K6 M q/ i9 E% f

1    21.729201548727808

/ I7 z- P* e0 M. b: _ H! F6 i1 l: W4 g6 l) u4 P2 ~3 P

2    16.571919173482897

3 X4 d0 q; O ~. [# L% V3 _6 c9 V v" U# c# c1 u2 Z8 K

3    15.215685473711837

; B: N) _* ]9 P! D; I- o, t* k% d. A# q" _

4    14.594900639351332

/ U1 j( W, T& P 1 p! D: \2 A) y$ @

5    14.149548965142023

; G+ |) W; S+ K( ^+ }% R+ g . H! C; q7 r, P- X2 A+ T% o( x

6    15.622920072028379

4 Q) J2 s+ X8 R ' h: X# F( t. U! G5 H- E* O

Name: tip_percentage, dtype: float64

3 Z# Q% a2 ~9 u. G+ H$ U+ A) S1 j& k 4 O" k$ g3 i; `# T- p ^

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

, U: x# o+ t3 u4 r- B$ |, G

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

; U6 C2 Q) c3 w! d8 m

安装

6 S* ]9 m1 s) J, f: t1 K

conda

4 _, n- s4 w6 O c

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

7 D8 C4 ~0 O# J1 P1 ]* \9 W6 i - |' G& A/ c8 f k2 P0 t

# for CUDA 9.2

, [3 A. c# k+ A* I6 R3 `% r

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

   cudf=0.6 python=3.6 cudatoolkit=9.2 % N I. d' b* S% Q* q ; |' X$ I; I! Y' N

# or, for CUDA 10.0

& d* x6 ]/ D) T

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

7 R" I, G2 q+ J' }4 _: q

   cudf=0.6 python=3.6 cudatoolkit=10.0

1 `' N$ d; B% ]" u+ K* x$ P7 {$ r( o m* f9 R+ m: w! I* s

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

' G( Q0 l1 Q$ z$ ]' i7 ]! n

Pip

+ R* m5 d% i4 U

cuDF 也可以用 PyPi 安装。

! v7 k6 a6 ~! I X7 ~( Q - V; p8 c7 U$ ]( W8 Y4 |

# for CUDA 9.2

" e2 W6 l0 j$ P. I

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

x4 v! _/ p5 y5 \3 D* g, J: k" y" k4 k 0 z* t! y! J+ x9 @+ w9 X2 r" Q

# or, for CUDA 10.0

' c' C/ a2 K9 l; S, T( O

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

! q: C8 K" H4 N5 V4 a1 G 1 @ o' Q5 J0 O9 C

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

j; R* b) A( W( g* Z( \: ^6 e

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

" Q8 Y4 a/ m$ J, w3 x: t, Q

雷锋网雷锋网

7 ~! a7 s0 n9 W f2 k - A. ?' B: F& I S" i( g' _. K: D 4 A+ ]* d7 q% g * c) I+ V H9 Z
* u1 ?) n& d1 `4 e# }$ S# H
3 h/ _# G+ S$ F% v* v* I, P
+ L2 W/ r! G8 b; b f 8 v, w# N( ~) q: P+ o , J2 `+ l( `( N. e$ O' Q. w$ q6 d7 i 4 B* {$ F3 ^: l2 p* B0 i8 R2 v; D+ t# z( ]3 f
回复

举报 使用道具

相关帖子

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