% O& b% I" P; I+ ^- b# \7 p
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
' n8 ^2 n; l( M
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
$ E0 ~4 s; g0 F8 f7 B: ?7 k
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
0 \ r: p Z% U% }" V4 |
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
8 ?/ r* D9 E" z. w- C
import cudf, io, requests
% T8 v3 J# M( S
from io import StringIO
u: ] v! B+ |9 q url="https://github.com/plotly/datasets/raw/master/tips.csv"
3 u7 c: i% T( Z9 \
# |( q* ~% P& h& L content = requests.get(url).content.decode(utf-8)
- k( y2 G, B- a/ T c tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
9 `5 `9 `. j8 t' @6 z6 [( }
8 o, k9 [2 `# d2 ~; K # display average tip by dining party size
2 Q5 y3 n8 F; f8 \5 G" U, r print(tips_df.groupby(size).tip_percentage.mean())
& W% ~& F( U; \; D6 l' l# N. i l4 p5 Q9 t/ K
得到的输出为:
7 ~ Z4 Z" _) c' _. s0 `/ Z
" D: c8 H$ }) J7 r size
% t( I- f4 x. S0 ~5 p. q
, d0 P) T! y' b0 @0 X9 x
1 21.729201548727808
& E5 i3 O4 L5 P2 ?: K1 g
9 p; Z7 ?' p* ?2 g% L
2 16.571919173482897
, X) ?2 L1 l/ G! ^" x: Q* U
2 z5 U' Q! e/ K. r2 f* G 3 15.215685473711837
0 w" E" w: c2 _2 B
9 d: S8 z' d- ^! m, n( W 4 14.594900639351332
% N/ D# Q% }7 B# C& h- h
3 ~8 ]: J- p2 ?! @; N6 a/ w* S1 I
5 14.149548965142023
& ]: }" Q: O$ ~& C+ r# E7 W. o0 `+ h# _) Q
6 15.622920072028379
j& F- {( }1 T& @/ Z: v
' R$ |/ O' e2 h' N" U
Name: tip_percentage, dtype: float64
6 j1 N, R8 |/ y# u t; c" E" P( L/ [* F- a
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
/ `7 f- t' x, w# ?
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
" x$ Y o' @7 E6 X9 v. c8 A
安装
5 F2 a& S/ N4 h/ b) z- t2 ^( {' }4 ~ conda
8 c( r% o L- }/ S( i/ Y0 @
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
5 N2 \: m, [8 N+ e( f( D' x% q O5 _3 T! Q* ^
# for CUDA 9.2
. \5 I9 D( e% |7 m2 T+ F
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
" u& a b. I) h$ z% r7 h2 h
/ X) d. ~4 V1 ^# `0 Q, } # or, for CUDA 10.0
0 ]8 `3 k4 ]/ B1 p) s
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
4 k7 D. u! \7 u cudf=0.6 python=3.6 cudatoolkit=10.0
6 `: O7 p9 @ L2 m* j; Y. T/ E x+ x
* K. ^3 L' `; e2 g% e 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
1 N4 h) d7 T1 F$ h/ c$ o5 G
Pip
" i1 @4 s% [( _ A
cuDF 也可以用 PyPi 安装。
( ]# b1 H% E" z. u! U7 a5 W* L5 H. j/ ~) P) D! s+ f
# for CUDA 9.2
2 k4 c- G/ S7 o
python3.6 -m pip install cudf-cuda92==0.6
& P* G: E$ u; K6 ~5 ` c+ {6 |
- I. Z* e* _/ g+ D # or, for CUDA 10.0
' R& |) u4 }4 U) E. ]% c- i# g* d8 ~ python3.6 -m pip install cudf-cuda100==0.6
5 B& t" g% m6 x3 [# c; l+ D
& [! d; L) m6 |7 N$ z+ g0 n 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
7 _* m) t$ b; ^- v3 b* z via : https://github.com/rapidsai/cudf
5 n1 j. S; I6 {/ G" q
雷锋网雷锋网
) ^) e8 v8 t7 w' }& u" K3 U$ h- ]0 h0 q$ S2 z1 J. _; r
3 a: F9 G& T; ]& q7 r
0 ], T! `! s+ }6 |2 `5 s! \
3 e7 x3 ]( N, j