1 m1 X8 D' R& Y! d3 O5 G 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
+ B9 ~% @$ G. F) ~. a( }3 e/ C cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
+ C+ _: t7 `" D cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
* G5 g. v7 S. s( C
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
! j3 h& ^1 K, w h
import cudf, io, requests
* X( ]! T( Z% n8 P' v
from io import StringIO
0 @, h' |' O* [# \ url="https://github.com/plotly/datasets/raw/master/tips.csv"
! m1 S& D" a7 y' E* n7 p* x( M
' _4 ?6 O- w0 R% _% C content = requests.get(url).content.decode(utf-8)
9 b. \8 e( U6 z& n4 o2 j+ p
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
1 l. ~' ^/ E v$ V/ n* D/ J p+ ?
2 K/ a7 r* }: p* w% L& m # display average tip by dining party size
/ k$ I5 q/ K+ ^ print(tips_df.groupby(size).tip_percentage.mean())
0 s: R7 ]* S9 _- [4 i
( {2 n ?! w; W: f8 E1 w
得到的输出为:
' c/ O$ e" N ?: P c$ R
/ B* E7 n0 {6 k: o size
: K% x4 b( }! E7 P U
3 c3 C: T5 c# ^2 @7 C# N 1 21.729201548727808
! R9 _9 B( K# G- W' Q3 m* D. V z, [
8 F, O5 V2 T4 N 2 16.571919173482897
; M5 c; Z1 h: ?1 w0 M
+ f7 {% L- C, v, G4 j6 t! X% S 3 15.215685473711837
e* n* m% ^# s+ t* j2 p- O( L9 B/ z1 F' c
4 14.594900639351332
* k0 a' ]( l# b) N- C: m1 `, |
1 J! G! b9 i1 j \% d5 Y9 `, ~$ i 5 14.149548965142023
: t% V9 \& C0 M; I7 ^
F4 M0 W& d. o" Y7 v. J 6 15.622920072028379
' }! s% L- |; ~* k
) N+ [. U- b5 J7 [: s3 T) _0 @3 V Name: tip_percentage, dtype: float64
* [7 h+ x! r, b* x7 J# [: W- F+ B, r5 }: C; W+ T6 ~
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
- t1 c% T( f+ ], C# L 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
! a* M1 }% ]& u+ @! X1 D4 m 安装
/ e- ?+ L; ~0 A& w: I& ^/ q conda
; E0 H: l/ S$ P1 O! _/ X
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
% E/ h8 F4 w" Q
. _4 N6 v, z7 P
# for CUDA 9.2
* g( X4 ?, v7 Q4 d# ~1 b5 ?+ m conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
; Z* [, p! ~. E0 K. W" ~) c# D" D. H: Y9 w) V. }% f; R
# or, for CUDA 10.0
- w) m+ N( [6 v+ N% m, {
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
9 S T v; f* a/ C/ a% F
cudf=0.6 python=3.6 cudatoolkit=10.0
( i' v( S( ^) h4 k& t- m. R
6 \% j, h1 a. J* u& n# y
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
1 D7 n `/ d3 d) g; A$ A( Y0 ]. ~ Pip
- \2 R/ l# q8 Q/ Z: |; K
cuDF 也可以用 PyPi 安装。
* B6 h: g; X9 v" r
3 I0 v9 ?) P8 c) @( X9 L7 f # for CUDA 9.2
' }4 ^/ e7 O; ^& p
python3.6 -m pip install cudf-cuda92==0.6
0 b; q: m5 m8 w! G K
- z" z L& ~6 A h3 j
# or, for CUDA 10.0
8 o3 u+ S3 ]+ g- _: `1 ]* U/ s python3.6 -m pip install cudf-cuda100==0.6
' @& S/ e1 N1 i% G5 y6 }( Z+ T$ ?" s
9 P% N5 F6 t l6 l1 w0 v9 t 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
' Y- P/ S! D' _' H/ I8 C
via : https://github.com/rapidsai/cudf
" m8 `5 [5 M$ B) o- f 雷锋网雷锋网
0 l" U, R V7 I
. m, g" Q/ M2 N
& {" I9 ~+ a5 |8 x* ?
" q. q5 P3 x6 v2 h0 {( A
6 o7 L2 W- E, @5 [$ A2 V