6 }! m% z3 l; J 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
5 s7 h! G K n/ y+ g1 E+ s9 D
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
' a9 g* j1 o# D0 w! G
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
: e7 U; |1 U; i. z
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
# f8 B# d7 p* t% r3 k7 w
import cudf, io, requests
* g6 q+ A8 q" S: j* m* Z" X from io import StringIO
/ H: {5 f/ ?! S. P# ~5 @/ `* F+ D" J, K
url="https://github.com/plotly/datasets/raw/master/tips.csv"
" N9 n X6 n2 q& [# {8 i8 A4 f
& v1 l! d1 b1 F: m. t7 h4 O
content = requests.get(url).content.decode(utf-8)
: G2 w/ B# a; \! i' p tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
% p) f/ w3 w4 S7 Y$ y# P: V% ?9 l
, r; j: N, H: G # display average tip by dining party size
. N5 s( ]; P- t0 Z) D/ U print(tips_df.groupby(size).tip_percentage.mean())
8 A; W6 S- e! K2 b7 f( G" `/ k# ]* x1 g/ C' _
得到的输出为:
$ A/ ]7 x# {; H" g' X3 I
, K( B4 C0 h3 _2 ^ ?# S
size
9 \. _+ B7 U8 r. B v
5 D( R) F2 J% u. g$ T7 ^ 1 21.729201548727808
( }& V4 k- S2 z+ F4 X
3 v4 y7 c/ [ D. S+ Y/ h 2 16.571919173482897
! R- l0 W0 b2 Z0 Y6 G9 o
W& v+ k8 r! H; u c& b/ o 3 15.215685473711837
5 P5 r7 a, I0 o2 K
1 K3 j) E" X% i0 i* i" D
4 14.594900639351332
# p) `7 l/ S1 K/ T( B/ K. B; N9 Q, C
5 14.149548965142023
4 o: S) e% E* [1 v" ?, I: E
% w# m; s. \$ \1 Z1 V) s 6 15.622920072028379
" e( D/ x1 X2 `( a% L0 {6 h6 _2 P: m0 F8 Y8 F4 F) `2 A4 M
Name: tip_percentage, dtype: float64
% X+ r# L0 E+ S" H7 Y) n. A/ F1 a
+ @ W3 M# C8 n3 q, S) {2 B- p 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
' V6 g3 J1 u; u, E P. H- E6 A% z
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
1 l' {: x' z! X5 p- \( R! B 安装
4 Z: S. m, ?: G. T conda
% ?9 }! F* `% l& I7 L0 X% E3 R: l cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
: o1 m* r0 F G+ J4 r9 d1 i
) p" E3 L0 T: F4 P7 o- v5 M8 s # for CUDA 9.2
/ m% ^8 U' v+ e! S
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
* T* N- w3 E6 m* F
, S7 x/ o" g$ m7 C) c, y # or, for CUDA 10.0
: Z, n$ Z3 T8 [9 c Q
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
9 k& R3 H5 N v! c# V5 [' q9 t# T
cudf=0.6 python=3.6 cudatoolkit=10.0
# d5 i: H' t& v. P, Z/ U* k3 x
1 ]& F7 T- s W; c 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
b3 t; ^, o& D l0 e% `2 U$ ]7 E
Pip
r' Q A: M1 ~0 P3 p- t, a
cuDF 也可以用 PyPi 安装。
9 k6 J) X+ |$ f5 c1 y+ _0 K! Y# Q& A; t2 g( g: \
# for CUDA 9.2
$ k- Y! E3 v2 M# ^5 J9 D
python3.6 -m pip install cudf-cuda92==0.6
6 Q3 `4 w$ R: |1 u
6 r$ d+ |2 g8 w( r # or, for CUDA 10.0
8 f) M1 L* I* l a& `
python3.6 -m pip install cudf-cuda100==0.6
( A7 J0 f0 u# D+ f5 i7 N
+ c' Y1 D3 O4 ?; @# e 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
5 \8 {; @: _3 v f) i3 L% N! q
via : https://github.com/rapidsai/cudf
! ?; W( @" G+ X& k
雷锋网雷锋网
9 z$ {' C5 K) Q3 k) F
& t8 c" U5 {1 v
0 {+ t& Y; ^7 w2 W3 I* d2 V
+ C9 q: T1 x: U- B* C+ C& _- w
. U. @( s! D1 i0 y+ A% O7 x2 [- j