4 j9 W8 ], Z) v9 N! g" J3 Q7 R
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
8 U: M3 E) j% s" I6 ?
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
+ H& ~7 _4 ~" |
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
( F0 f; z9 p- s1 B/ S9 T0 q
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
1 _+ m3 F5 g9 l5 T0 t2 f5 n, A import cudf, io, requests
# V% d5 N# L2 `# U5 v. E from io import StringIO
1 X4 }- C! o3 @: \( m" b url="https://github.com/plotly/datasets/raw/master/tips.csv"
; {. h' k0 M6 `9 a
/ ]; |: |& |2 N3 k" Y9 w content = requests.get(url).content.decode(utf-8)
0 d/ C; J6 x* f/ h- m1 O. t; q+ W2 t tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
! x9 A* c' V! B) X5 ^/ b, o
$ Q4 o _! K9 A; z # display average tip by dining party size
. h* V' T& S! @. }+ ~! @
print(tips_df.groupby(size).tip_percentage.mean())
& l* l. p. W' Z4 T1 G% |6 F# V
8 a- a) s4 `1 ?3 w, y& } 得到的输出为:
7 o, k/ I* u- {' @" O, E- c D
# D# `4 p+ P0 x" G! x1 q size
4 K% E& m( ?8 Q! @' W2 }; }& d' l5 H |# {
1 21.729201548727808
. I( ]& F+ b8 E ^0 A4 |1 E V8 U
; p+ o: Z6 S, f5 S
2 16.571919173482897
( e7 `+ I: n" v8 v! Y
% r( [: J2 ~$ b; V7 k0 f
3 15.215685473711837
( P' a% I5 Q8 y. x. | k* e7 d5 ~4 t& w8 v# {6 q
4 14.594900639351332
* {$ b$ W J5 ?/ h4 [/ k# d! T, a2 }) [' N2 Y, H, N9 W' z
5 14.149548965142023
3 t" \9 p4 U/ Q
/ }! s/ Q7 _+ _3 m4 D/ R' e( v 6 15.622920072028379
2 G2 m' M& ^: @) L8 O) L! U
. H4 o; c, w2 \( t1 j- X1 Y# t
Name: tip_percentage, dtype: float64
9 L8 X+ f* ]* S
8 b$ t7 a3 t. K! }' t, K) I 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
]: B" J/ k; t) L; O- f0 s$ Y$ z1 Q
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
: K N) ~& {+ W6 B: @" p 安装
2 |, I/ y3 h) _0 U+ ^, X) G, H% f% i conda
; q) ?$ c2 O- S# t; J/ Y2 ~$ `: ` cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
4 u) O- _/ c: j! @ [
$ M8 i9 L0 S( X2 U* c # for CUDA 9.2
+ E5 s- v+ q/ K6 Q f! V conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
; k/ b& z2 i/ q) J1 g4 s5 F* a
& p+ _3 I$ @5 t* [ # or, for CUDA 10.0
% l d% [' G' f: ~2 T# j
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
6 C% B4 w7 Y8 \& A# o4 n cudf=0.6 python=3.6 cudatoolkit=10.0
* ` X: j6 @0 L, z# h9 e& D! b
. U+ E6 u/ b' B 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
5 w |1 P$ q- ~, h$ r Pip
% {7 c0 v3 L! G+ W3 g3 Q3 v cuDF 也可以用 PyPi 安装。
0 D6 W# O1 A8 y) \5 q
5 D" p# f' T4 E
# for CUDA 9.2
$ Z: r4 q1 |2 S5 R9 S0 n( i) k
python3.6 -m pip install cudf-cuda92==0.6
8 w6 G9 o: R3 t# |. a
+ {5 {5 }4 N$ C: y # or, for CUDA 10.0
7 C. v( h5 a5 U+ ~) `; ^1 V( E- d
python3.6 -m pip install cudf-cuda100==0.6
, v o" D6 _& K, y) D
4 O+ Z- \7 h7 q* Z" f7 F, K
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
+ a! Y5 f) S4 M$ U0 e
via : https://github.com/rapidsai/cudf
! L7 Q0 }+ B7 d; o' V
雷锋网雷锋网
* P D; v9 E. h# U8 S5 \; O/ E; `
& H7 r# G& t5 \0 m, M9 {: H( y
9 k5 p4 X2 l& Z- Y4 k$ W6 \! {1 R9 {% i
/ I% D; W5 D$ l8 i