* i3 |9 n8 B) c" k 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
- m! F" g0 X9 d; o' l5 v2 L- C4 m
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
5 l2 c# \" D( A6 I cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
, |" }( e/ y6 C9 M3 \- W! _/ n' C 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
# [% }$ l( O3 E3 E9 q" |
import cudf, io, requests
/ K, N+ J) m# `$ u o# v from io import StringIO
# t5 q/ ` a1 y+ z url="https://github.com/plotly/datasets/raw/master/tips.csv"
' }# u& J) K W
6 X0 y4 A. j0 |: v content = requests.get(url).content.decode(utf-8)
' `( Z3 P) X3 ^ K6 [3 v tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
1 |- Y3 r6 A3 b) S8 ]5 Q8 T- U6 i. p
9 X$ `" w; P7 Z: H. o8 N # display average tip by dining party size
+ S5 j5 V. G! ^. t
print(tips_df.groupby(size).tip_percentage.mean())
9 a3 Q2 [0 d. F
4 u; E% y" `( @% t; Q' U* N 得到的输出为:
3 \2 Y/ |" o- z$ y: M
) |* y) r- i! q/ Z" _ size
6 j! |8 ?8 N: f$ }
) A6 _3 S e! D 1 21.729201548727808
( t" M" B! q& r
$ }! O7 A6 j7 Y: y: ?6 T" ` 2 16.571919173482897
* u$ o8 Z' k, v" _
. x: N: s2 S8 u9 |1 Q; l% [ 3 15.215685473711837
( Q+ L; v x. a) o' h* F8 O
0 Z. Z: P/ ^3 w6 Z
4 14.594900639351332
$ `) V7 ^" F2 B
% K7 H6 y% q" V: i
5 14.149548965142023
7 B# W' L% q7 G( }
3 k/ {& {) z2 |# p" A 6 15.622920072028379
" @5 \/ W( r; U: t+ U% d
7 k3 o5 k; P( O1 ~ Name: tip_percentage, dtype: float64
. E6 Z8 F5 P0 F$ r9 a5 G z
0 N# |4 p8 y2 `& L8 A
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
- i. V; L2 |" F& x2 K$ ?0 o5 c 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
& j r; {9 m* W
安装
+ m: P* S% V2 g. x/ l/ {: ~
conda
% [$ k% h* V1 u* N- E
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
0 |2 w8 _% D' o# q3 S! N2 P4 u
& D4 G* E2 P) o; B+ ^* P3 y # for CUDA 9.2
3 a8 j& g% \1 `7 l
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
7 A' W4 I F$ Z- M! P
" s2 I( h# P) |0 i C+ r
# or, for CUDA 10.0
! V2 o0 E1 b4 G
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
* H/ ~# F" Q7 y/ _# h% [, X& B cudf=0.6 python=3.6 cudatoolkit=10.0
' q& \8 p: A9 e3 u U. _
' I* o- l& ]( C7 h/ M, N2 { 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
& _- J/ g1 j0 U+ O! e$ K( Q
Pip
6 k* N- s* @$ A: c( Y: C5 }
cuDF 也可以用 PyPi 安装。
6 P' }- m* A. w3 I7 ]
2 G9 ^: o1 k. e) q # for CUDA 9.2
2 ^- Y$ _( a- d" M python3.6 -m pip install cudf-cuda92==0.6
' W1 Z1 X' K( y" \6 I
' ?# n% n+ m4 }9 I& G # or, for CUDA 10.0
5 F* k |' P# m/ @' l' e: e( j) {- E
python3.6 -m pip install cudf-cuda100==0.6
0 r0 m/ X* M4 c- d1 h7 E( D7 z @$ O( K2 p8 G9 s
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
- K, J8 ]- Q1 i9 g* \1 M5 T6 c* Q via : https://github.com/rapidsai/cudf
2 s2 E, R/ K1 q% o8 [# X2 D
雷锋网雷锋网
& H6 @; r( i& G9 U% F" n
" U+ Q3 K) ^ l5 H0 D: k
/ A* F, o& H) ^- Y5 f- d k E; L
8 M$ D. x* B. p% _7 z" \4 K5 A1 p* A, S2 M: N# i; y