9 ^+ { z" x$ C# |' [9 R3 {
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
$ ^5 X, b3 n9 N. Z0 t1 m
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
* @0 `) R8 `& K5 ] cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
7 ^# [2 c: p" Q6 y: E
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
+ s- D" Y- u S7 [: F6 i import cudf, io, requests
3 ^* ^" b+ Q, Z' L/ q H) j from io import StringIO
! L. R: c0 X! \ url="https://github.com/plotly/datasets/raw/master/tips.csv"
# S8 p ]9 F* A8 A+ G; A! F' n/ _/ L3 o& ^
content = requests.get(url).content.decode(utf-8)
- t% j* N! L2 \& v4 x
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
- Y) b9 U( C& [0 D2 i
- d8 b% R4 F6 X& z# y; d3 H3 ]; g
# display average tip by dining party size
! `0 G7 H. W+ Z! y0 a' f) P
print(tips_df.groupby(size).tip_percentage.mean())
6 x1 `" r0 f2 t# |+ D4 y- _4 n7 W
$ Y6 X% L# ^ i. r
得到的输出为:
/ s6 S8 ~* x- f% ^/ |7 g
1 x9 w. f; U M; A+ g size
( l& ~% Q9 G- x$ y3 J* j, t+ ]+ p4 a
1 21.729201548727808
5 b1 b( r* e2 v4 Y# q6 V3 m
8 X) w+ n$ j* |* g% f 2 16.571919173482897
* l( T% k4 S2 _
) w S% Z0 c# {
3 15.215685473711837
& o6 Y0 Q3 Y* Q" P! h. U Q% \6 M* @) H0 F5 a9 j& r
4 14.594900639351332
/ f. M' N7 X& o- z
& W* s- o6 K \0 Q/ p U 5 14.149548965142023
) W0 H7 Y" ]% c) W2 y
0 z& P4 n3 M4 W3 d2 [' G( ] 6 15.622920072028379
& F, E9 d. T b: n
9 j, E% O, \% D4 M1 i, |% B Name: tip_percentage, dtype: float64
3 P& j, Y* V0 D, n' E m9 S
0 y7 u% c5 b' Q1 F3 ~ K* o8 h 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
' k! l" K4 y0 N0 L: ^8 b 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
" s! K9 r: X. F& e( _* S6 c% k+ c
安装
) h/ v( W# b3 {2 O* v/ z3 w conda
* o% l N3 y& S1 w# |0 U: W
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
$ f9 R3 J( M% w! U
! O: U6 L P, J1 F! ? # for CUDA 9.2
8 {. ^( y, `( Q+ j& c conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
9 v* T2 ~6 ]! k' k6 b+ Y7 H
, U# n# ?. @& w, x# ?
# or, for CUDA 10.0
' a0 o- g% M& g6 a: F0 G }+ I- J
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
- V! F" M! w3 @) ]8 O T cudf=0.6 python=3.6 cudatoolkit=10.0
f/ F! |- B1 f- l5 W
; H& `: B9 |. q0 T) E1 F
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
, V3 }7 Z6 t" i+ m
Pip
. W+ x; N3 C' b- l4 Z/ S cuDF 也可以用 PyPi 安装。
! M, t% @0 P, {4 U
1 u6 |7 z0 C0 u7 ^1 Y( z$ z
# for CUDA 9.2
8 K0 L; Y3 t' t3 `! P6 ] e python3.6 -m pip install cudf-cuda92==0.6
5 t ]4 O% `0 S% `0 M0 x8 P' ?; o. S, J5 C6 a& q: [9 K
# or, for CUDA 10.0
% G& K3 q5 I* |/ [0 C" U/ H
python3.6 -m pip install cudf-cuda100==0.6
- S4 j k" E/ E: F9 x! `
7 K. H1 o$ L: l. H, } 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
6 i" @, J& ]9 R w! u via : https://github.com/rapidsai/cudf
+ m0 q- d0 Q* o; L1 g0 Y
雷锋网雷锋网
, X, m8 h" I& ]/ |5 l% V1 f; y! ]$ j* w+ T1 s& H. O* Y) L
; [" Q* s7 E8 @; B
! r: }& Q8 r. a5 e9 ]; {) X* l# n* a9 [9 {* I& I, c W/ @