% o0 t4 o7 B8 E% Y
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
; M2 x9 e/ B1 s! f* \( D
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
! u5 D5 l' [( s% }' Y cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
7 e. P; A* b1 p3 `* P
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
: Z( R$ `9 N- D1 Y) y import cudf, io, requests
8 ^; o: ]$ T3 `, j from io import StringIO
, v! m9 D4 B: g* {& t url="https://github.com/plotly/datasets/raw/master/tips.csv"
' I. ?4 R; F" Z8 m3 D7 q7 T; m4 O
0 v8 ?9 A) s4 b: i( T; {, F
content = requests.get(url).content.decode(utf-8)
0 m& G6 ]+ u- i6 b8 w( w$ [6 `7 x tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
, ~* s+ a- S3 T' W0 I: f% t0 T8 w
7 i% B! Y9 U- G [2 R& y9 H- e& q # display average tip by dining party size
1 {, w& |: A( L" c/ O
print(tips_df.groupby(size).tip_percentage.mean())
: l# A q" Q8 q0 Y
+ J! Z; w3 {$ Z8 y7 r1 ?
得到的输出为:
2 Z5 P( n" c$ ^' }* I3 V4 y+ O& E% `. |; L: Q% H; ^9 z
size
2 F6 p: A2 Z. ^) G
B5 e z: k) `1 o4 ^8 m 1 21.729201548727808
7 l+ O' k# N- P t* `) S
1 E: m! _+ h" F/ [ 2 16.571919173482897
$ \$ Y3 V1 ^; M& d7 k. E0 e0 W
& r! a! g/ p, [ 3 15.215685473711837
- n5 H w y% R! m
3 F6 q3 H3 _+ J% v8 O8 B3 h 4 14.594900639351332
- X. `4 j- b. E$ C5 y6 X* i4 U5 Q/ L" u; U
5 14.149548965142023
i; T- q$ y7 j- e3 e. p
3 s/ e4 I* z0 I' R. L 6 15.622920072028379
: i; o0 q S l0 B
$ P! z9 L9 |3 U# @- E Name: tip_percentage, dtype: float64
: m& l. L: Z, O& X F- Q. G
# N. c* T- ^: N+ ?! L 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
: m4 C" D6 a4 z7 V0 w 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
! ]4 e% i/ ^! i) c9 d; b- Z
安装
; {$ j5 U- p0 ?% S7 w) K
conda
) |' Q) g M7 Z6 X: a
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
1 r/ r3 r0 j% F$ x/ l7 w
/ n1 Z+ t2 c9 @5 n3 q # for CUDA 9.2
+ y. o& S6 s* O7 G
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
: w3 f/ q1 `; g# F$ I2 K
, k! C) @' y ]8 K4 d8 z # or, for CUDA 10.0
2 \/ H/ x7 s9 r$ ~7 m: v! F# m conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
J; Z/ H9 y5 A% [ cudf=0.6 python=3.6 cudatoolkit=10.0
, Y% k3 y! V# a. `0 u
) Z( ?( O1 h% J 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
; N% A! ?: h! U1 c1 P
Pip
1 K& c0 |; N- W! V- e0 t cuDF 也可以用 PyPi 安装。
3 u3 i) Y7 c0 B( W
" S2 } |5 G9 h # for CUDA 9.2
7 E$ a2 D+ {$ S8 W1 u python3.6 -m pip install cudf-cuda92==0.6
1 h) B5 C' g" T" O8 a$ H( G' U! T: r+ a3 q* G/ `9 Y/ n0 \7 M
# or, for CUDA 10.0
+ y5 W- z, J* H% B( p python3.6 -m pip install cudf-cuda100==0.6
* w, F1 X; w( w3 h* c
6 V* p" z$ V' x- |/ L2 u. t" P 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
$ `% d& Y6 `- @. U6 | via : https://github.com/rapidsai/cudf
2 d2 F4 O7 n* I 雷锋网雷锋网
: M: x3 r! f* H, A/ p/ T7 j- R4 q
9 D+ _) J( }4 v3 t7 V7 F
, h# K7 |$ H/ N( Y+ ^) o
$ I, N5 d& e" [5 r% X6 E
: A& N" v$ k) W, b, {