4 }( i- q$ V. L( L# m1 U 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
4 p( \/ m6 Y. w1 r
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
( p9 p( W2 u. J
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
n0 `; N. _) ~3 _. x0 J 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
$ s. t1 ]9 z* K import cudf, io, requests
4 _& p0 f$ E* ]: d2 k4 Q from io import StringIO
* n6 R8 Q* m( a* Q url="https://github.com/plotly/datasets/raw/master/tips.csv"
, Y n" B, r6 o
& s) [1 M1 I) S/ x8 | content = requests.get(url).content.decode(utf-8)
& z- H& M. U* Z- e( c5 m
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
& R4 p4 I" J- N; K+ ~' _
$ B7 L5 v: h* v, c. b$ } # display average tip by dining party size
% N3 G* ]$ X' A+ ^* g$ Q% J) \
print(tips_df.groupby(size).tip_percentage.mean())
# Y9 H6 j' n7 v" o
# d& R$ ]5 ~ s! e$ S 得到的输出为:
' k$ Z, V8 E/ l: K! D4 d
4 `8 g% P, ^0 [ size
( N4 i) U% N/ K; N h
/ }" V/ t5 }2 X 1 21.729201548727808
/ P* T& i! |6 K+ S% ]# |
" U( S( R* Q/ H- }: X 2 16.571919173482897
4 x4 X6 u) @3 U+ [ y
9 i) {& C$ @4 O2 z- P3 g S 3 15.215685473711837
n4 `: B, M2 a
# r; Y+ n! ^/ I 4 14.594900639351332
4 t% a1 v2 a. H! P# D4 P3 E! l6 [) F3 o2 p" o
5 14.149548965142023
" w( U9 @* s; Y) w }, p8 f
' \$ X( n7 B1 {5 W' Z 6 15.622920072028379
: u, i& E z3 }# T1 F$ P9 P, K# X1 D8 Q! j6 w' s
Name: tip_percentage, dtype: float64
+ _- p: U) f3 S" u( Z* Y6 g
& y7 a h4 I. G. l: M' T% Q) a# `* A 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
, h J) X, M& q9 _
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
3 j; A+ F2 U5 [* j8 N# }9 D8 X 安装
! }. A5 Y: f8 O% U8 w; u2 Q5 ]
conda
4 B2 ^. J) [4 D- F+ C
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
( O2 b) M' y: ]' W
8 n6 M2 D4 O4 P' [& c1 C2 d0 _ # for CUDA 9.2
* O& U3 s8 y3 v7 q
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
9 j; M @' _$ g+ w( \! W
2 n0 ]' P; [* C" {8 B # or, for CUDA 10.0
4 I" _$ d+ P" n" d |
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
% C: ^' t8 L7 j! |1 ] cudf=0.6 python=3.6 cudatoolkit=10.0
2 ^8 S; [( r4 o+ s6 s+ _ K# ^0 x0 R4 a: S' R C6 h
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
5 I* @2 I$ F1 t" C. p# ?& R8 X Pip
& t4 E4 f* I3 ^: L# Y$ K/ K cuDF 也可以用 PyPi 安装。
8 P! n- p. O: w8 y, H
7 n" j( A. v) k2 G" t+ {3 y& j: U # for CUDA 9.2
! V- f1 W, t0 ] python3.6 -m pip install cudf-cuda92==0.6
3 ^8 E5 g$ f8 S \# I$ W
: l% S, r% M- N2 R. n, Y # or, for CUDA 10.0
/ @; ~) x1 _' `4 _+ Z3 n7 G @: x) ? python3.6 -m pip install cudf-cuda100==0.6
( K% D0 s+ A4 l7 G5 J7 Q
* Q' p" [6 i' b# _' ~
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
' U1 _6 \5 t5 i% n1 R" z* C via : https://github.com/rapidsai/cudf
- x6 ~; e" A1 W. G' ~ 雷锋网雷锋网
+ v# Z- i5 P& [8 E c, t8 `5 r
) b, {- H6 I& x* K3 |" M6 g V; U6 Q
X5 ^- f; M/ F8 r
" V- w% [1 z) n1 |7 |; g3 ^; R- o* \
0 Z1 L+ m: q8 B5 @! |8 ~