0 d; }, d6 o2 a$ E 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
s0 E W/ @. U& s( z cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
- h3 w T7 i" e cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
0 G; l) J3 K! \- S0 v, z 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
) }$ Q/ S7 B, Z- q" h import cudf, io, requests
5 m$ ]5 e# a( p% Z; d& @4 m+ t8 A# U from io import StringIO
! \' w3 h/ |) x2 D url="https://github.com/plotly/datasets/raw/master/tips.csv"
2 d! Q. k3 ?7 m# X! V4 @2 o" B
. r. v5 k# M' O1 h& J9 u9 l; o6 j1 u content = requests.get(url).content.decode(utf-8)
' \3 E3 _$ l! o# r$ ^. b b tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
! D) W$ X4 J% Y9 _3 f8 i6 _" u
+ @) x. J3 G4 X; o: { # display average tip by dining party size
2 C0 P3 q( |4 R( K
print(tips_df.groupby(size).tip_percentage.mean())
/ x0 l4 Z- N' `1 v" b/ j% G
, L5 w! P* H8 ^6 k) a0 }5 [* _ 得到的输出为:
& o- g1 w& H9 o% g; i; d
# g4 w2 r8 u( e2 n size
; N; ?1 I" M* Z9 Q3 d; C$ I& P: {
# ~+ u4 y( a& T& A/ b; ~. v 1 21.729201548727808
0 Z( _* Q0 J4 U1 f8 B( P; M. _2 X: k$ o" `# E7 e+ p
2 16.571919173482897
s# R; C. n3 L. S6 h
3 _7 k5 K7 t( f
3 15.215685473711837
3 J- Y% @0 }1 _2 W% y4 _3 n% b" C
4 14.594900639351332
" `2 {6 Y7 R& r O: |
S: R5 H( a; y v( a s6 Q$ I 5 14.149548965142023
9 B! D2 j& M' ~. S2 G. ?
* E4 a# ~) W p* I! t7 R$ r 6 15.622920072028379
1 R7 ?. ` S' ]% H" u8 g! c7 b4 \' |5 E1 ~, P# B: s
Name: tip_percentage, dtype: float64
6 A$ [6 R1 X6 ?3 {$ y
/ W, V& z: b9 n: d: a0 z5 s2 F 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
8 D8 G# K! H" B 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
1 L7 K9 T3 K7 g+ j) C/ I 安装
8 |! C! _# e! X/ L9 p4 V
conda
0 F8 w: ^8 e, f/ T. E9 P cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
& S2 N8 i' R. B& R# ?/ Y% k
& o3 }, e W5 g- V # for CUDA 9.2
y' h: g5 ?( N conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
& m4 R: V6 T% i) ^1 m
; I' i; A" [. J # or, for CUDA 10.0
0 s3 B# _+ ^8 B0 ~
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
( p8 I. i/ Q {. `% y cudf=0.6 python=3.6 cudatoolkit=10.0
2 b/ \& U7 p5 J$ n; e
8 E6 d0 L F- A, |
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
1 X1 o. s! s# i2 @5 b+ W) I& j
Pip
0 c1 H" n+ d* {5 n/ w6 x- Q. ~ cuDF 也可以用 PyPi 安装。
* M4 f& d2 U& E' ]% _' _% C! X$ _8 n7 y, d3 ^" u7 I' w1 R% Q
# for CUDA 9.2
; f0 Y- ~: ^# n }4 ~
python3.6 -m pip install cudf-cuda92==0.6
6 s8 [3 z9 u: h4 M" ^
# a: P* C5 Q. _/ c8 Y( r; l9 K# d # or, for CUDA 10.0
$ _7 i5 q( e5 V3 B0 h5 y; N python3.6 -m pip install cudf-cuda100==0.6
% A$ }( y* A5 Y
^0 Z" m& T3 t, Z9 m; B 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
/ j: [" a' b8 y/ Z+ k via : https://github.com/rapidsai/cudf
+ I f! `3 V5 \% I# t' o$ I- p1 P
雷锋网雷锋网
8 K. Y0 t, I) R m6 R9 k! {6 h
! L0 e) T) O- H
$ _1 t7 z; w/ c# Z5 a' V
* {/ y1 q0 c" g0 U) J+ s W8 N& t
9 a4 d, i) R$ B