' m8 z I# g1 }% D3 f6 N4 h; \ 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
6 e( R! ~! }* a _$ B. _# i. H( s! m cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
/ V+ B/ f* B, }; w: m2 |/ Y7 a cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
5 q' Z9 i* ~8 P
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
3 F, o4 ]7 x4 y4 y, ?9 b# Z
import cudf, io, requests
* ]$ l2 ?' Z! Q- L: s/ k from io import StringIO
: |% U ~4 K% f7 K url="https://github.com/plotly/datasets/raw/master/tips.csv"
( H. ~% B; p! a1 I' U& _2 I! Q% W: n
content = requests.get(url).content.decode(utf-8)
! T& g. [1 I, I5 I+ |- U: X5 T g
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
; l) N! y: B: J3 U( W: N3 \6 G5 A
- \% a( ?8 {9 B: x # display average tip by dining party size
7 c- x0 O# O0 |2 b: N q/ f% F print(tips_df.groupby(size).tip_percentage.mean())
. E2 Z; h3 d- }1 y$ }
# k- u8 d: [! `/ L 得到的输出为:
+ z# Q Y6 v3 Q. Q
5 q# ?& H( o- U, }0 y7 x) K1 Y/ l
size
P8 |# X# ]- K8 D2 ~7 F3 h/ g% v6 G5 f3 S' \ v u
1 21.729201548727808
7 Y; W, ?% i' e- e+ h
& p2 Q: L) ~+ E& S: x3 k
2 16.571919173482897
0 ?: o% s- P6 R, Q. r8 T. E4 C. @, M' y% J( Q' O
3 15.215685473711837
( n1 L8 {6 a$ C+ |; f8 x
. K/ M" L( [5 _: G8 Y. B* ^: j8 J 4 14.594900639351332
1 e3 r4 [. ]/ }6 w4 R6 }/ }8 ]+ `5 }
5 14.149548965142023
5 Q0 } F( P$ [7 T, }
( I& \; v- ~/ D 6 15.622920072028379
+ t/ q6 M% H5 |1 k8 h) g6 u
6 X0 H1 u& H+ A6 h6 s
Name: tip_percentage, dtype: float64
# |2 }1 w+ r" a: X8 Z
5 J3 z+ X2 M* l 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
9 ?6 P! n( x" J# d
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
4 F+ D, V1 w, B6 c
安装
P% M- _' f! y) Z) h
conda
$ Z9 y: B1 A& ^! N) h cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
5 {% W3 ?' R" j
, L. w" Z! L8 s/ K) _ # for CUDA 9.2
' m6 j) y5 B) e) X4 `5 {0 _ conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
& i; {7 u- l. J6 h6 x6 M$ D+ h
$ J1 K$ i' _# e3 C6 M1 m # or, for CUDA 10.0
5 J4 Q) r/ R4 ?0 C& r5 p* I! n2 l conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
0 m9 m8 H+ q9 Z' X \
cudf=0.6 python=3.6 cudatoolkit=10.0
+ D4 v5 Z1 u$ s! B& s/ _ c
8 ^6 U6 Z8 G/ ^" F# S2 n# Q 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
( @ n) h+ ]5 r& k1 L3 |( R Pip
. W7 l6 w+ O3 A* `* r$ P0 k$ ] cuDF 也可以用 PyPi 安装。
6 p& |2 C( X/ E1 r6 W6 `
: [7 a3 C/ F* V: X% g% m/ N # for CUDA 9.2
$ X# o Q/ p1 T" f n python3.6 -m pip install cudf-cuda92==0.6
4 \9 A2 L w4 w2 M3 p7 h0 L2 }- n8 p' q* c6 H, [, N& k2 g; x( i
# or, for CUDA 10.0
8 v3 L7 v8 t3 k
python3.6 -m pip install cudf-cuda100==0.6
& p6 m. X6 Y( i3 _7 D I9 L$ ?/ E
, j7 s6 M' ~7 m, D. C
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
2 f& q! [; E: ?& n via : https://github.com/rapidsai/cudf
0 A1 k! k1 l$ l# s# s0 Z4 Z8 L 雷锋网雷锋网
9 @' ^ d2 v" h3 G3 h
0 z! t b4 t' F$ `, I
# u, M2 `# ~6 I# X3 a+ s- g* x3 M7 x" u% k `0 k7 t
! y6 R* Q2 O: D; N; j