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

[复制链接]
) l! N9 i7 r& a9 t1 {# r
5 ]+ K5 t* l8 C7 _8 Q% h9 b2 d: R
- t: k* |( w+ g! V& E
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
( u) C' u9 c' \7 J8 Y
/ v' g5 d8 s' ~' F( Y4 L4 R
7 f5 w6 j0 x1 B! C
% Q1 L/ W2 G1 D5 n

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

2 t! m" p0 z- I- F

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

4 @5 l3 v" U) L" ?/ m0 f

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

0 {! M' S& }, X2 Y/ _8 F

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

' l; D! }! e* B0 k6 u+ V; K% X

import cudf, io, requests

& y$ X+ Z+ p9 N7 H

from io import StringIO

/ |" N% g! H5 l' a0 W5 _) [

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

) ] x6 l! S, ~- x* c $ s* w+ F6 t7 b7 V; ^6 p

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

6 Z# X/ }) `; v8 h( ~9 c# d

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100, a$ w2 Q2 i7 R ! c; }. m8 q4 s2 {0 ?

# display average tip by dining party size

3 x2 n' Y/ u! c2 @% m

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

# d, p. |6 n: g8 R7 m 8 y: Y ^/ {# `* q: H# r9 V! C

得到的输出为:

' f' |) y5 _4 k 8 S* C/ D: n% j' T* G, H3 r. P

size

% H8 O# g& t2 K1 Z ~( M- q2 ^# }) x/ }/ J6 T) B, {

1    21.729201548727808

5 ]9 s; S. s% O! K$ D / Y! _+ o7 S; K: j( k4 t" m, j( q) g

2    16.571919173482897

- \6 q8 {2 u0 t * ?5 l( C) W' G' J7 n9 g

3    15.215685473711837

) p! u# I$ ^9 `) B3 o8 P # ~ B& a7 g5 Y* R

4    14.594900639351332

% i8 `4 C4 k* E. \8 A% I( a: s$ }. H Y* C6 ^; h2 ^; J5 k, j! S

5    14.149548965142023

* x' N+ b0 O8 i8 q' s# G5 U5 o% {: c! c' C1 Z; y+ D+ C

6    15.622920072028379

2 D# p% P1 @& p& }' l. u 7 E% }1 D. U9 |) M8 }2 x5 l3 a

Name: tip_percentage, dtype: float64

/ U) D/ h2 o% Z6 `! O9 e0 ` + L% G! @7 K# Q2 n; x

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

: m$ S) g4 }7 ~

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

- }& Y V% v0 w

安装

7 H8 b, o" E# o. g/ t$ G3 r

conda

! S9 S$ y( Y1 F9 u8 |. C0 |

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

1 }5 S5 O( e5 E6 ^9 m) k+ x0 C4 c8 o" d

# for CUDA 9.2

0 h, \# l% W& a0 ~. n& q9 G

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

   cudf=0.6 python=3.6 cudatoolkit=9.2: q, w m% O, f4 h : j: K+ k8 N' c; N

# or, for CUDA 10.0

& E7 \/ q3 N5 [, B" J

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

; Z9 N+ x9 N4 a5 ^

   cudf=0.6 python=3.6 cudatoolkit=10.0

7 A: R& R$ `* l0 Q : T- M6 \# b X3 B

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

) y$ @# ~" e# b) S) g

Pip

/ `5 w) ?3 \- I2 t* Q

cuDF 也可以用 PyPi 安装。

9 M3 }' j& R7 U( w4 S1 ]$ V 5 s8 W) z6 f- w2 E2 ~+ v

# for CUDA 9.2

3 y$ H% m3 a; E7 B7 e/ G, l

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

6 j! d: `5 y1 C( L6 C 9 B+ E# D1 ~8 b& Q% R/ k

# or, for CUDA 10.0

l% k# w6 w1 g. G, j4 u7 P* J( v

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

) ~" |. }' h& X; O 3 y6 ]7 X3 y8 M( h) W! d$ |& K1 J! h" D

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

7 \( X! k! ?% T( d- \4 Q% b

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

% X! ^+ ^: v# I

雷锋网雷锋网

: _, @% N3 A% c* U7 S ) e1 d# U: [1 { 4 i9 G# |# h" I! A. x9 l2 Z 0 l, _( x4 n; j. W+ L! [9 \. j! G+ { 3 N7 v1 s4 {/ `1 z2 [/ h
' o5 M* X C5 l5 C
0 `( U5 Y! ], m+ v8 b
, [) B$ @% Q1 }( z; t; {% z( M3 z: L: g; M8 l8 k) H , P4 R: O1 c: }" y; {* W + G; t+ q7 L8 V$ w3 e # ]$ z/ ~5 U# Z" t* B- O
回复

举报 使用道具

相关帖子

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