" |: 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