- X/ ?% P% k0 T* ^6 h( |7 q
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
/ Y( c6 {9 x( l7 R: d cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
2 r/ ?6 I, t" v3 e3 J6 s0 Q7 T
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
: N/ Z+ s5 n" e+ |; p. v 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
4 f1 K7 l3 k/ L8 @ import cudf, io, requests
% ] z+ V% \3 |( N( Q; o/ T from io import StringIO
V. E9 B1 o4 n' P: j2 B/ N& S. P
url="https://github.com/plotly/datasets/raw/master/tips.csv"
% n( D, K6 A" `+ x8 K+ m# L( X0 z& h+ ]) z4 ~, E; V
content = requests.get(url).content.decode(utf-8)
( A# E% e4 {; D* a$ Q
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
0 z& L: ^0 I0 _5 Q9 Z( {4 g
- z# X# k/ _6 b! \6 y+ B # display average tip by dining party size
* u3 @2 _3 R5 j D% J% a6 T4 S
print(tips_df.groupby(size).tip_percentage.mean())
5 f0 N6 B7 E/ r" x( Y# B
: Z4 D% D' r5 Z+ x% t 得到的输出为:
* Z4 C9 {2 Z: p( ^
" s1 g6 H4 U9 A size
& D/ T8 j" X P6 j$ f0 P3 f* N( n6 _; B/ B/ C( K0 R3 _ f5 Y$ ?
1 21.729201548727808
: C0 O) G1 {( R% b) |! F1 Q& \! I
1 {% O6 E( G0 }: y- h+ V 2 16.571919173482897
5 ?! K+ d" k( j5 |, p
6 B8 d# X0 m7 R( z3 m9 o" {
3 15.215685473711837
& m! h8 B8 [ d6 b9 i. h% J
- H9 g/ n# _. s& O3 L U
4 14.594900639351332
4 M: M- g! i, i- t
& H# m, Q* O! w& R, d" E8 p 5 14.149548965142023
% ^" y* l9 E6 F% j2 [" S5 v( o9 Y5 f: l ^' ^2 F- u
6 15.622920072028379
4 s* G, \+ h4 C' M5 j) _. o8 z
# a7 c5 l* s+ \# u6 w
Name: tip_percentage, dtype: float64
9 x$ Y, }/ m1 f1 G
3 f# D1 \0 y! ~ 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
4 k2 s7 Q8 g0 O9 [0 A 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
. |- k3 v& C/ u9 f6 Z7 C; m* b( k0 z! X
安装
. p- [/ O/ r1 y; m( h) L1 G
conda
$ Q; m+ j3 ~) a8 p4 P" z cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
7 y" w+ F+ ?9 Y4 R1 G" c6 l
# [& ~* X) W% i5 l; N0 U # for CUDA 9.2
b* ~6 Z! |9 z( V2 O3 R- H$ q
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
( Q. Z8 c2 z; Q" A3 O5 v
' A( Q+ b4 z* n. i # or, for CUDA 10.0
0 m8 p& O8 Y9 @$ ?# O2 W conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
3 v# H4 ?! Z- C; a B1 X" f
cudf=0.6 python=3.6 cudatoolkit=10.0
3 L- q3 T, X9 O# L1 o$ e2 H$ F, q) H
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
* Y2 z) ?, I) j5 d' V' [& h Pip
5 W* J: n8 U. u, l' M8 ^
cuDF 也可以用 PyPi 安装。
0 U, V- ?; r. g6 O7 m7 ~6 p
9 C8 l, N* D H# `" x+ J0 q( n # for CUDA 9.2
' P4 z$ m! l8 `/ t7 M; _, X, i python3.6 -m pip install cudf-cuda92==0.6
3 c, F) l5 ~& j. J5 K4 O: }
" r6 i+ @! J( k
# or, for CUDA 10.0
& _$ D8 p* I4 Z3 c' b
python3.6 -m pip install cudf-cuda100==0.6
1 E* Q, B% _- g
$ o4 y% K/ g; N1 u1 l 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
2 z( m- |& t- h2 _$ J
via : https://github.com/rapidsai/cudf
1 |& c: ^8 J1 l9 M
雷锋网雷锋网
2 [1 _1 Z: U5 u2 k
* w+ W$ J( }' T1 B' f x. h! @' \- ~6 N Q f2 n8 V; o" S3 L
! }( ]" F2 \+ F. N" d k8 O
* X/ p2 D q* ?0 y