* q: g+ u8 @. y- T8 P' {3 I: { 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
/ E8 h4 ^4 _0 V2 O! K: _" s
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
+ e3 D5 [$ p! M) u0 z# t6 J
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
+ ?8 p0 H( F+ _; v 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
% u7 S% |, H9 ~3 a$ h$ ~8 D: Y import cudf, io, requests
1 E' U: ~8 v( o- z; W3 @
from io import StringIO
/ l- n' S% G- ~ url="https://github.com/plotly/datasets/raw/master/tips.csv"
, l3 a5 \3 N$ x
# f; x! n# b* i9 g+ M; @# { content = requests.get(url).content.decode(utf-8)
) m2 U* C) L. H8 r" Z
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
4 i$ H+ x& x: _$ i* ~) {
5 O8 q, g: x3 A" ?
# display average tip by dining party size
0 Z% v& g3 W. f+ R' b7 f$ T0 ?( w
print(tips_df.groupby(size).tip_percentage.mean())
/ G8 X! e/ O1 W1 N- W1 \
# Q) z- M& n+ [) \' l, K5 _5 C 得到的输出为:
. p: |. n1 t1 ~, {
5 p! v+ Z2 `3 X0 s5 V size
2 S& ~; G7 L% _! q6 I# ?
) q0 |! K6 M q/ i9 E% f
1 21.729201548727808
/ I7 z- P* e0 M. b: _
H! F6 i1 l: W4 g6 l) u4 P2 ~3 P 2 16.571919173482897
3 X4 d0 q; O ~. [# L% V3 _6 c9 V v" U# c# c1 u2 Z8 K
3 15.215685473711837
; B: N) _* ]9 P! D; I- o, t* k% d. A# q" _
4 14.594900639351332
/ U1 j( W, T& P
1 p! D: \2 A) y$ @ 5 14.149548965142023
; G+ |) W; S+ K( ^+ }% R+ g
. H! C; q7 r, P- X2 A+ T% o( x 6 15.622920072028379
4 Q) J2 s+ X8 R
' h: X# F( t. U! G5 H- E* O Name: tip_percentage, dtype: float64
3 Z# Q% a2 ~9 u. G+ H$ U+ A) S1 j& k
4 O" k$ g3 i; `# T- p ^ 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
, U: x# o+ t3 u4 r- B$ |, G
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
; U6 C2 Q) c3 w! d8 m 安装
6 S* ]9 m1 s) J, f: t1 K conda
4 _, n- s4 w6 O c cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
7 D8 C4 ~0 O# J1 P1 ]* \9 W6 i
- |' G& A/ c8 f k2 P0 t # for CUDA 9.2
, [3 A. c# k+ A* I6 R3 `% r conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
% N I. d' b* S% Q* q
; |' X$ I; I! Y' N # or, for CUDA 10.0
& d* x6 ]/ D) T conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
7 R" I, G2 q+ J' }4 _: q cudf=0.6 python=3.6 cudatoolkit=10.0
1 `' N$ d; B% ]" u+ K* x$ P7 {$ r( o m* f9 R+ m: w! I* s
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
' G( Q0 l1 Q$ z$ ]' i7 ]! n Pip
+ R* m5 d% i4 U cuDF 也可以用 PyPi 安装。
! v7 k6 a6 ~! I X7 ~( Q
- V; p8 c7 U$ ]( W8 Y4 |
# for CUDA 9.2
" e2 W6 l0 j$ P. I python3.6 -m pip install cudf-cuda92==0.6
x4 v! _/ p5 y5 \3 D* g, J: k" y" k4 k
0 z* t! y! J+ x9 @+ w9 X2 r" Q # or, for CUDA 10.0
' c' C/ a2 K9 l; S, T( O
python3.6 -m pip install cudf-cuda100==0.6
! q: C8 K" H4 N5 V4 a1 G
1 @ o' Q5 J0 O9 C 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
j; R* b) A( W( g* Z( \: ^6 e via : https://github.com/rapidsai/cudf
" Q8 Y4 a/ m$ J, w3 x: t, Q 雷锋网雷锋网
7 ~! a7 s0 n9 W f2 k
- A. ?' B: F& I S" i( g' _. K: D
4 A+ ]* d7 q% g
* c) I+ V H9 Z