/ ~6 X: ~4 G0 C" _, e7 ? 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
2 u0 O5 F r, v. o2 ]" ~
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
- o& c+ N4 y6 C9 O/ }+ ^ cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
2 ]: l% b4 r ]% V. i 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
3 O' c, ^9 E+ j+ q; {" K import cudf, io, requests
. ]. x7 Q8 J7 `+ R8 ^+ l1 c/ m from io import StringIO
( x) T8 ?5 g0 l- U' b
url="https://github.com/plotly/datasets/raw/master/tips.csv"
" W% ? P. J: g6 V- L
5 z. R9 l( L, G- B content = requests.get(url).content.decode(utf-8)
% H* l" f. D9 _, H+ A tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
7 `+ z; |, s% L! w2 k
' X/ r- K* t% x0 c8 [1 ^9 p
# display average tip by dining party size
) m, c) e$ [0 j% w$ l
print(tips_df.groupby(size).tip_percentage.mean())
1 n3 @0 t ^% z8 s
" X: Y0 N$ O5 z0 n& d, P: E5 ?6 O) D
得到的输出为:
. j: v! a1 R/ }, z$ D% B0 }% B# P5 L' f! i L
size
% ^9 \1 p$ P9 ?2 I# K9 U) {
( S9 F1 l% X X/ i 1 21.729201548727808
1 L; F& w) ?4 d1 ^4 \
; W# \# v% m+ Q" E( T& `- I: M 2 16.571919173482897
; U- ?, J2 H% ?4 a3 a* H- r1 v2 s0 _
7 M# `1 z% k6 y6 ^ 3 15.215685473711837
/ b- }. k! B7 T. f* ~4 i& x4 Q
& \: _; ] y) n5 T1 } 4 14.594900639351332
% k; U, B5 K* }2 Z9 L
2 E3 t2 |3 }# d, E% O 5 14.149548965142023
1 p7 O! ^! r/ L. H% M
# P9 r/ _7 N: K! C* | m7 L: N0 V
6 15.622920072028379
+ ?- N+ L# P. x2 N0 z e+ M( b! A* ^4 g8 i% `
Name: tip_percentage, dtype: float64
0 g6 r y# g/ `
2 z T* V% d5 z5 w 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
* d$ D. T. ?: D/ R0 ]3 r+ y$ i 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
- c! J) x2 E6 J' \% B8 {+ O* h: H& G+ Q
安装
5 \% D% X& Y' r1 V) W/ t
conda
3 ~9 ?! u" Y7 i1 M
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
& y/ d! X E, K }0 c7 s) O
1 @( b; M. M/ c
# for CUDA 9.2
; h+ T. I8 |7 G, W9 O+ k4 ~ conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
+ ^) C: [5 Y' e3 F& W: j: r
4 n @9 f% h5 o # or, for CUDA 10.0
# v2 D9 ~5 ?; b
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
6 O' @% }/ w( P, Z$ A+ j
cudf=0.6 python=3.6 cudatoolkit=10.0
, c4 w% W4 x. ]9 T
7 g1 c" b+ a, O; c7 H! d
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
% b: v' x5 e! t. b
Pip
7 I n" h3 [/ u9 V- z, Q cuDF 也可以用 PyPi 安装。
- t8 L+ s3 a+ }* n
; b" b Y* W) g) }8 z$ Y # for CUDA 9.2
7 d0 O% x4 }9 ^5 K$ G1 j; i python3.6 -m pip install cudf-cuda92==0.6
1 J/ [, p( ~9 T
. Q8 p/ E- a) l* `
# or, for CUDA 10.0
( R$ B7 _) W. k* p# O* A
python3.6 -m pip install cudf-cuda100==0.6
6 b+ [1 d, ]0 K! K2 a! m1 Q4 X; a
/ }, U( i% Q D 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
0 V. L2 ]4 G! f2 k via : https://github.com/rapidsai/cudf
) D- I! p3 n) R$ b+ \& n0 `# L6 W5 K9 p$ Y 雷锋网雷锋网
8 _6 w/ R/ W9 q2 t9 H, v% Q1 |5 X$ [+ a# X3 v$ l4 N
! a: k! h9 |3 G5 x9 b$ p: q7 d' V
5 z0 V7 q2 X4 J! L$ B4 [
: k2 h* f) c4 Z C$ x' N9 i