8 Q0 h z3 d) ~3 S6 _, V! y7 J) I 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
, E+ W* }- j' {2 ~* I1 R$ u; d5 C cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
0 \0 |* k0 E" |' n8 [! R' z" [% J cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
* R# K6 P( B& j2 I- R8 J 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
/ [! o0 R8 h! x" p! @3 @/ w import cudf, io, requests
5 \6 N) n4 @- _& z$ _" h from io import StringIO
* a# Z4 Y$ T1 Q/ r
url="https://github.com/plotly/datasets/raw/master/tips.csv"
6 A1 q# T% R K& Y
( Z5 j( v% B% A) i% Y' D9 J7 e) ? content = requests.get(url).content.decode(utf-8)
6 T. s1 F& M8 x4 Q: u
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
3 Q/ y# J# l' n2 c2 F. G
" [+ f1 T8 p' W7 B- {
# display average tip by dining party size
& _. m4 g" ]: Z, F( u$ b print(tips_df.groupby(size).tip_percentage.mean())
2 I. Z+ Z4 ~$ d" g$ W% z2 u0 r3 T5 o7 d. s( g. M6 t6 j( N
得到的输出为:
3 A. x: T. ]0 e7 F% i. X( a" o% H! x
size
: g6 _0 M0 o! d2 i3 L& L$ E. i0 @3 S$ O) G |9 ^. K# a
1 21.729201548727808
% B2 C! N% G$ |. H6 u2 m. U
! d3 d, R4 B2 a* _+ Y% o 2 16.571919173482897
/ g( Z( i6 G( Q: v, ]. M) q: z% h1 M. p) A1 b, n
3 15.215685473711837
/ _" B/ G' S' ~6 f5 c
6 u3 c; O5 p: j0 u ?& _ 4 14.594900639351332
& z( W/ O* h$ I( H
. l# x) V1 N7 ^: t! m2 t5 t
5 14.149548965142023
& i1 W. u+ H7 d% t
. J) m" A9 S7 v
6 15.622920072028379
' C; Z# C$ b w' m
! ~3 W# p1 Y0 [ Name: tip_percentage, dtype: float64
& [- e0 u6 P4 T
. w0 x# i8 X- W: Z: k. t 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
5 g% \4 _7 |$ o 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
( [/ p" e" m o# `3 H3 V 安装
: E8 S5 S$ _& B5 W5 V
conda
; }0 { r. [3 o! j7 t) I
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
+ l+ `$ A( x! P; U/ _3 d6 d1 N" x+ D
) D ], n0 O. _- F: F. |8 ^' E # for CUDA 9.2
9 Y! S8 y4 O: m
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
' Z' ]3 j9 W! F m% x! H
( F t, }7 t& b5 V, a0 ` # or, for CUDA 10.0
. Q( k+ Y, T0 F2 w- X5 L% u3 k
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
9 v& T' b% `; I0 D
cudf=0.6 python=3.6 cudatoolkit=10.0
1 g) P& b! c5 ^9 \ H/ B# B7 z( Z& V$ }
* S0 c! _2 B' P; o6 q 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
/ D- u" |1 {" C
Pip
" {6 ^1 ] X$ x, Y cuDF 也可以用 PyPi 安装。
9 X3 k y% e" Z" j; _; g
" J8 B! z% j7 {5 l
# for CUDA 9.2
( o7 q4 z0 h/ |% V9 a! b( z python3.6 -m pip install cudf-cuda92==0.6
/ M# }7 d# N7 }% r$ W5 j1 }, R8 N1 W! ]; W4 A* n9 x
# or, for CUDA 10.0
5 |2 o- t; K. L
python3.6 -m pip install cudf-cuda100==0.6
% Q9 C# f( F% e" J# Y5 ^
4 d# ]- ]; A. H$ {0 C8 p5 T4 o0 Z 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
1 h0 O! e! C- b4 F$ \% F via : https://github.com/rapidsai/cudf
; ^0 H/ t( S7 m0 i 雷锋网雷锋网
1 s2 r- A( p. i; a
7 ~, x4 ^, H! u; w/ K3 u! i5 p% L
& A( Y* o0 ?$ q& C( e' i: @! a( U' H! r+ q- r
9 v5 `! z' e& n. D& N# L