8 N- I) f! | h+ i
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
% c% R! f+ r F3 S$ g! j4 R& t
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
+ W4 }) @ |9 S6 p0 Z cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
/ B$ V" a* W6 ~7 j$ R 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
; M. [8 H# O, R8 N4 L) H
import cudf, io, requests
) o4 C, E5 H. L% }9 ~4 ]* K+ f from io import StringIO
9 L! |6 I( O; ~3 l6 ?( L* P+ b url="https://github.com/plotly/datasets/raw/master/tips.csv"
" W! b, R# E* |) A" O/ G0 m+ e: g2 W' B# y( ]
content = requests.get(url).content.decode(utf-8)
2 y6 m- X1 `8 m
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
4 |) c3 K1 V+ k" C! ^$ h4 [/ g4 u
; E8 g$ z5 Q& E6 O ~- x
# display average tip by dining party size
, ?; D% t1 G: N
print(tips_df.groupby(size).tip_percentage.mean())
$ P( b! l# I. v6 ?( w( p: }
8 b9 s/ ?, A9 p9 K# [+ V 得到的输出为:
4 G: `2 o1 K) H3 S/ S& o& k2 G8 }" O5 Q8 L3 I) R3 Y3 z
size
% n" Z& J4 S; A% y
7 ^! q; s; O& ?2 U' d 1 21.729201548727808
, X) S! o% P% ]* y
$ |5 S6 o" i% M( c 2 16.571919173482897
5 J9 E% R& h3 O
: s5 X! {3 m1 K/ D 3 15.215685473711837
8 {8 W! D( S" k& h
: u3 ^% ?. r( q. r4 S0 j' ^ 4 14.594900639351332
7 t& S4 n) g! l! `; j
5 z0 L% p4 u/ U8 P2 O4 ^3 x0 q0 ^ 5 14.149548965142023
# E! s V% N# `- l2 h
+ j" ?$ K. B& @0 k% q6 J 6 15.622920072028379
- ^- X- _& I# V" w; s+ o4 _
& M& U7 M- z+ v0 \& \ Name: tip_percentage, dtype: float64
! a4 R' \' L% c: A
- k" E6 O, ]" k3 K* u, ?
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
$ o1 V4 H9 e/ S; H* G
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
! V3 ?5 @- N4 ~! j 安装
4 I; `" u/ [" Y X# k' D conda
% Z$ v6 ?6 q) |4 A7 s. Q cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
% r9 h0 A' S. [7 m
, X0 k% S: z% T& i* M # for CUDA 9.2
( R& e' |1 U. t9 Y/ @1 q
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
$ W) B" ~3 ^$ ^8 N$ g
" j9 O. \, D/ Y7 @, h( K
# or, for CUDA 10.0
& q/ M" C8 a+ i9 B4 x( W, L5 X conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
7 D+ B$ P+ }& A! v+ F
cudf=0.6 python=3.6 cudatoolkit=10.0
$ y% Q) M# X! K7 u/ q4 J
( U2 C$ N# d; \9 U1 f 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
# i* U# V/ |; c( l/ o9 ^3 M, o Pip
) n% r$ ?; s0 r, A
cuDF 也可以用 PyPi 安装。
( C7 N/ Z! ?# J: H. f) ]9 V8 r
/ Y: [4 ]5 w- W3 w4 ^ # for CUDA 9.2
6 h; M/ N% h( f K* g5 M python3.6 -m pip install cudf-cuda92==0.6
+ E8 M/ @$ i1 G4 a1 e/ |1 o7 Z( w9 n7 }, ?* _
# or, for CUDA 10.0
# a- b; a% _7 i9 d, U) I
python3.6 -m pip install cudf-cuda100==0.6
% }- |( K# q& F0 E6 V" w0 {
) W P2 k# q: ~5 |8 q- H
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
4 |5 A5 |, m# T, _: x via : https://github.com/rapidsai/cudf
, U2 Z, F% r- N. Z' O: ^0 V0 h# v 雷锋网雷锋网
( c+ R. R N/ M& }) P
; b5 Y) T8 h1 Q" N4 ?
( _- W; U& h i. I2 G1 v% h9 ?7 w6 ~- c* k- r" q' j, b, P. o
1 ~8 R+ b" i; J+ I* ]- b+ ?: b