) {! G& e) Z4 u: i5 N 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
7 j- P F9 V+ u" H, ]% Y# L cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
6 h$ m7 `! S- S3 u; r ]
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
" c# e1 c4 @: {: Y$ r$ i7 P% k) j 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
" m0 p6 g a0 K: t# V) A import cudf, io, requests
$ Q* w/ G1 m( V0 A from io import StringIO
" i7 D* Z' J- a* ~2 L9 f: ^1 Y url="https://github.com/plotly/datasets/raw/master/tips.csv"
* T: L4 P' E: a \ K( S4 `* y, v5 ^7 y0 b& _5 w# v
content = requests.get(url).content.decode(utf-8)
% ^+ f( G" T# S0 O% J) S
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
& r n( c [5 p; ~9 i# p$ U0 C9 R5 `0 F1 S" T% r9 I4 V g# Q' |
# display average tip by dining party size
( s. N1 Y7 w9 M/ v* N, ^! F M% u
print(tips_df.groupby(size).tip_percentage.mean())
! F$ S( F0 P1 O6 k4 T
2 j9 h9 E7 c: o7 Q 得到的输出为:
7 A0 i* |5 z; Y6 z6 Z8 d
" d9 _3 z& g- g' ^3 f9 I size
% k; g1 L1 x0 s8 x
: V" o7 P8 f* A& c, R$ Z# ?4 h 1 21.729201548727808
/ w# v. `. ^4 v6 p! @8 [
$ Q* c( M1 p5 a, [" T5 m9 R% {
2 16.571919173482897
, r2 l- V# C4 X, F% b/ B; i
# ] M5 b, y* G8 g! Y! d
3 15.215685473711837
! d* W8 N9 T' O! `3 L
4 H, u8 H U9 B# x8 F+ g: {6 A& ~ 4 14.594900639351332
Z/ f' s9 D; M- L# T$ z$ E- a, n( u
( X9 v, ~% t' o f @% ?, h2 S8 ] 5 14.149548965142023
) e& m b' e& a3 S. B v" h) M- ]; n3 f) n$ {: S, |0 M
6 15.622920072028379
, v0 p7 Y/ D4 u7 ^9 x i, {! a3 C; a4 m/ I. @2 E) D
Name: tip_percentage, dtype: float64
6 o* n: y4 e3 o/ I3 J3 R) ]* C& e2 D& ]
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
6 L2 X3 v$ t" q/ a+ n2 D
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
% X/ o u; N/ O1 V' } 安装
3 z `6 ?, W# O- A3 {3 v conda
. O2 O9 d7 {0 y+ o
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
% J; q1 s4 E3 A0 N" N X9 z. Y& H6 h
# for CUDA 9.2
; v; D6 A3 C% c1 Y
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
2 \4 k/ ^: @- X. s
3 c7 Z6 T: P# {% D& l: X- d- k # or, for CUDA 10.0
2 I% Z4 h1 L' j: R, a# o" I0 ~
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
7 K U) T6 I7 Q4 o cudf=0.6 python=3.6 cudatoolkit=10.0
5 K3 P) H' ~# j% V4 n5 N9 r" `
4 X- I T+ a0 t) ]2 i; t 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
3 K) A+ W& m- ?% n
Pip
L- E; Z0 K+ V) h( E( h cuDF 也可以用 PyPi 安装。
0 z& E7 G6 `: p* J$ d, G/ f
3 q# Z- q% h0 s1 N6 R3 m, H* ]( { # for CUDA 9.2
5 k, ^7 s" S6 `
python3.6 -m pip install cudf-cuda92==0.6
* ?* {9 S8 V6 K3 u
5 v5 b" }; y4 s( P" A x9 A3 W; v
# or, for CUDA 10.0
! I% G: C5 Q4 e9 T
python3.6 -m pip install cudf-cuda100==0.6
( H8 q, X" j- ^& V# u- z0 s1 q
4 {* i1 M% `, L; _2 J* R 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
- p6 c) s( e$ n6 L0 ] via : https://github.com/rapidsai/cudf
: \3 y `) D, z
雷锋网雷锋网
" I2 _! B0 H3 r o# c# L6 b+ G2 c1 m$ w% ^6 n$ i: V
. j9 e( {, ~7 l( z& n: c6 O C% s4 z4 P* n; o3 @/ Y
+ }/ K8 E% J, _# t2 {. p