7 _* k0 Q0 O5 P' `( ~ 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
( u! }( r7 z: Z7 ?0 G
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
- k: I E" r0 L* r- X) X cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
6 p/ ?2 v% Y8 F 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
\) r. F* E* b+ S
import cudf, io, requests
/ d$ Z5 D8 M7 s4 W from io import StringIO
3 s% X8 Q V9 o7 J( D2 u url="https://github.com/plotly/datasets/raw/master/tips.csv"
9 A1 H5 A% I l4 T8 i* W3 H# W7 H R" |! c. C: M* ~; w$ @
content = requests.get(url).content.decode(utf-8)
, @& V1 e( T. A( e- g# o- w tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
) W z) J; V6 |4 q
9 E7 Q) M3 X, |5 m # display average tip by dining party size
; U9 |5 ~2 i% [" F( b- v
print(tips_df.groupby(size).tip_percentage.mean())
8 G: p3 W5 a7 _4 [" N
( x/ J" ?+ ], G
得到的输出为:
6 P$ b/ W" z V# c- w& A; e* `/ V
$ ?5 _3 C( {5 I* Q8 T size
; ^$ k1 q/ x4 x1 I1 c" I8 Z; [5 L! d& m- S% T+ w4 N& P. @
1 21.729201548727808
, Q- P. b- C( l- _7 h% p5 m: p2 Z+ `3 G( Y
2 16.571919173482897
3 E- N' r# F0 M- f4 _! U/ h* D8 p7 x' W/ _. u9 K8 B
3 15.215685473711837
2 V2 }1 r9 x; I6 D4 p- d
1 T9 v) \9 y: e A* B. Q3 R 4 14.594900639351332
: a, y/ j* w! W+ `
4 z7 Z E) u# P2 q5 @) D9 \* X6 @ 5 14.149548965142023
5 R# O* H4 t- \9 M3 O3 g7 r' T P' g
. e1 E' V; S i7 J$ v s 6 15.622920072028379
1 m& b& C1 {# g" H) Q I5 t
5 [3 |$ v' I" C Name: tip_percentage, dtype: float64
# i6 f/ Q- z/ w. v" t' o+ g/ p a
, u3 u( g% |; X% A" V; @& [" B 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
4 V) S. B! Z* n
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
' @- P: l2 R5 X" ~9 e6 M7 f: [
安装
8 g8 j1 a- l2 _3 h' m1 i4 P conda
9 S \# s d" ?* K
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
0 s0 P* l% ?8 p9 ^6 |/ e
( m( D; ^4 m* s) \' k # for CUDA 9.2
) V0 v. d1 P& N2 G conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
3 y* \ D! n2 x0 `# k* x
0 L: e2 u; ?4 e9 H) ]
# or, for CUDA 10.0
: A( B2 j e& j: K conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
- }, K I, h7 y3 ~7 P) _2 V8 E
cudf=0.6 python=3.6 cudatoolkit=10.0
; @1 _/ |$ U. V E
6 i( O# d$ [) m; R 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
% z2 I5 l8 C+ Q- M Pip
/ {; c2 y) a+ {- x% b: O: C
cuDF 也可以用 PyPi 安装。
( A* P9 \+ m# k
9 T0 |& D" V) ^, t9 S- _ # for CUDA 9.2
1 V! x+ ?6 s" D' c python3.6 -m pip install cudf-cuda92==0.6
b$ \" H, v/ Z2 `: B5 |
, |7 Q5 S6 Q1 U3 i. G) ] # or, for CUDA 10.0
2 @; m6 |& i: V' |$ {. s2 ?
python3.6 -m pip install cudf-cuda100==0.6
8 U$ w1 C6 Y0 ^" {. m p# T1 R3 f( R2 W$ y$ s
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
- O; z' v9 k( G/ G* I
via : https://github.com/rapidsai/cudf
: {) _8 M2 p& W/ F1 V
雷锋网雷锋网
/ C1 o: d9 l8 P8 N9 R F( I- p. c
" I/ T0 P% i2 {7 ?+ F
+ Y* P$ Z: {3 f* s
* W8 C! m3 \$ z# m
5 T2 E' l# r m5 h, ^