! X0 z9 e# j- Z. f @3 b2 l# e
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
% \ A/ v: v3 V' i cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
0 D/ B p. ]* V3 u9 i cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
8 k( s4 M! k$ m; ]$ }) D
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
5 t4 k; ~; t! ^2 p* ]
import cudf, io, requests
' Z1 d/ L* f+ T! T
from io import StringIO
5 w5 v9 @ {( h5 j- C
url="https://github.com/plotly/datasets/raw/master/tips.csv"
1 `$ s7 r5 |7 V) R
Q4 m; j; C7 ~ M0 M6 p& ~2 Z5 g content = requests.get(url).content.decode(utf-8)
; @ N0 M( A- O/ M- O, W tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
6 Y6 Z3 o: o$ {
|" L }& N2 a9 q% U$ k6 e6 a # display average tip by dining party size
+ h- n% \6 c6 ?, F& o print(tips_df.groupby(size).tip_percentage.mean())
' k6 O% ^# Q. a5 @7 j) c0 y: X
4 l& d& S8 r" s# S5 F) m' [5 K4 R 得到的输出为:
4 v3 L/ Z+ ^* B# L: {
2 n& b) W4 F) m& ^6 P" U2 n size
' i! x3 k% p9 t- e0 o, K3 l# U; F4 X. E: J1 f) b
1 21.729201548727808
6 ^& A7 C4 j" J k* c
+ K U }9 z) v) D! d" {! m 2 16.571919173482897
& e: H7 M: e1 x- ?; U e1 {' c+ P4 C" l5 B9 @/ Y) h6 Q- F' o9 U% D
3 15.215685473711837
. m4 ]- w& }+ K" ~) W9 X9 i
4 x4 J, `+ Z* B4 T/ v4 ? 4 14.594900639351332
, C+ M( o) _) E: L9 J; B. C. e0 G8 D& l2 |1 e
5 14.149548965142023
) C g+ c9 A- U; f1 Z4 T: ~4 ?* d1 F1 J
6 15.622920072028379
) Y3 `# m# B1 Y: k, O
. ?4 w: l6 Q5 _8 z
Name: tip_percentage, dtype: float64
6 W) [9 N' Q; U3 F H" B2 [3 p, M- o# R7 U
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
. U7 c% M1 D0 l 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
- W5 u8 t ?& l5 g
安装
; v( W+ a# K2 i6 O1 l j9 L conda
& F/ E4 R' S6 l) i1 M1 C2 S4 `
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
1 N' f/ E$ g ^3 l4 \
: }( Z% o9 I% ~' H! t # for CUDA 9.2
6 f: m' H- K5 S9 z0 i; h
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
$ ~* f& X' j$ f# p+ T! F& P
8 a; E+ L9 Y4 i% P" ]8 V # or, for CUDA 10.0
( Y: o7 ?# k9 o
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
, l1 T0 E5 J2 Z) d% r cudf=0.6 python=3.6 cudatoolkit=10.0
3 a% d2 \2 n6 h" }3 p) `
3 m6 u$ n- o0 X7 \9 B% G/ P& J) a 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
" n( ^$ {9 ~/ Z: i/ ]/ ^ Pip
3 D7 ]! y' d; Z( r4 ]( {4 O cuDF 也可以用 PyPi 安装。
8 c" T4 o+ g. m" L
5 T% n% a: x" f3 C9 W) B # for CUDA 9.2
' w7 n3 j/ r9 |3 Z2 z
python3.6 -m pip install cudf-cuda92==0.6
# w5 c" l* h9 V, s+ f! I: L
) |6 ]/ v5 M1 |1 e9 J. v7 }
# or, for CUDA 10.0
5 Z% O/ x& k+ s: C9 K2 e python3.6 -m pip install cudf-cuda100==0.6
z& m. a2 |0 t9 Z/ M+ I8 Q. p L
4 O! a/ x( l) k) O# \
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
0 X. b q( K# G+ ^" R9 R$ @
via : https://github.com/rapidsai/cudf
- b) O: k8 _( q" m
雷锋网雷锋网
# a, \+ b3 z3 l$ [
5 v4 V, _3 C2 d# `- H& q% i
: F% r+ j. w0 B7 s; ~; a7 I. H" n( W( B4 @2 \: _3 j% d8 B2 J+ j: y
' L* U$ A# G$ t" W( U1 K, i( T! J- Z