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

[复制链接]
1 p) ?. Y5 ^+ ]2 q4 \( G- d$ D# v) T
8 ?& @, O. D7 Z4 p: h% J2 M
% p& s) Q- ^( I$ L- ^2 ^) K
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
) i/ x* U0 X8 l- W3 @! r4 A
: o& C: W, A$ [6 I( z' |( z2 {
0 u4 y7 {+ B2 j# \
" |: p" d/ ]8 _

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

4 ?9 ?- ~# ?- Q3 N" d- u

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

! X5 u0 s- G: d: s6 i2 B

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

6 G `; k9 q/ S% K5 u6 q

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

% R2 ~" p. `; L

import cudf, io, requests

0 p/ F# F( o% |0 S& ]+ N

from io import StringIO

( \; n) k+ } Z$ _, x8 h8 R

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

& V! P. n, z, ^- u 0 F Q; `6 o$ Y# T1 Z# c3 X0 v, S

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

4 O1 \7 T$ z& \

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100" `7 j8 X* k1 h; I' N4 E8 ~/ }4 @ 6 Q- r' ?3 i6 N: a

# display average tip by dining party size

4 o$ b; j! ]* v Q- m' o

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

0 w( D: t% R1 ~2 i3 i 6 }+ w8 H+ m1 x! _

得到的输出为:

, P3 Q2 i. j) L$ m' R- `9 q/ T0 i 5 m* U6 v$ m5 a; N/ h+ P5 j3 Z: J$ w

size

9 ?9 t* z0 ?; t; K% m4 _: _! l9 y3 L, x5 \; H! B$ A$ q# z+ @9 W

1    21.729201548727808

" s" W( [3 {/ S; d 5 [. q7 T9 ?: r

2    16.571919173482897

, V3 Y. ~. H+ b & I: ^0 B. h- w# ?8 F$ h, x* c

3    15.215685473711837

# e' U& P. F& g ; _" M% {' a3 x& Y. i) m/ @0 i

4    14.594900639351332

8 I. _* r' I, T ( ]( d t/ K# b8 ]8 H, o4 K

5    14.149548965142023

. E" Y( v9 H4 ^ i " N: q9 }* b% H* F9 K& [& F& N0 k* L

6    15.622920072028379

" v |9 p- d$ n* d3 g1 n % h/ o7 X; O% T) n6 g7 U1 g

Name: tip_percentage, dtype: float64

* h7 N7 |+ `5 A$ F4 R " |; y- a6 u# v M1 h5 @1 c: N

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

$ s$ S" d J& V( J

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

' i, L( @; G& e; v

安装

- N6 R2 ?2 ^1 x

conda

# ]9 K" e; ^* q6 I# e' U7 ?5 _; [

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

/ X; j+ r5 M8 N0 o" X , w# i1 K* w4 h/ w, k/ D, l1 t' l% ~. Z

# for CUDA 9.2

4 r$ ^% w2 ]4 }) F

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

   cudf=0.6 python=3.6 cudatoolkit=9.2) Y* n6 F5 w8 ^, }; a/ Y 8 c2 z9 N0 j: w% `

# or, for CUDA 10.0

& W8 I N; y4 @0 `( H1 i

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

' H0 D9 j8 u6 `9 V3 y0 c) F

   cudf=0.6 python=3.6 cudatoolkit=10.0

) w& x3 Q" k h7 O( L4 m ) y) y8 F+ C2 K" e% W

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

7 M+ N6 x/ H- X0 l2 }+ _

Pip

% \% o+ `+ L! O* c

cuDF 也可以用 PyPi 安装。

: w- R8 _9 f2 m Z $ s2 z0 q! q# k/ w

# for CUDA 9.2

5 k1 i9 @- s3 {! K: s |8 G

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

7 Z% u/ q( p O! U* v: j: t( [1 u* Q$ k8 ^

# or, for CUDA 10.0

$ s. U$ b7 @- Q' q

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

6 _ B9 R& k4 b; x6 f7 q7 D + Q4 m6 O/ a: l9 r, e: l

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

+ f3 Y# A# t T+ D2 J

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

# v4 F; F) Y. s5 w% [# D

雷锋网雷锋网

4 X: d |" Q- r/ y0 c& M5 o9 {& @9 q, q0 E: L! A ' t& b, b1 U" L6 g: n* i1 h / ]3 ]' ?# l @& G 8 P: k& Z/ P1 A6 t5 [5 ^& W
7 X1 B! T5 u9 X- w( Y1 l
$ @/ i: ?; ]2 n# R
/ F9 {" {. M- w0 U! ?% o8 `7 @2 V; h1 P4 L3 T6 O) v, s3 [0 u $ f7 r, {3 g, c' h/ ~2 W/ ^9 A / f8 m* H& @' D. `/ w1 P+ Z4 D6 O; P6 i3 `& ?4 l

相关帖子

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