- F1 l$ o1 x0 e! M( o7 T2 Z; F) ~ 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
) X7 Q$ c- l0 ^; T1 q5 l cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
; }; o8 h: I! R6 x% ^9 m X+ y* s
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
p5 F8 r, ?' y1 l" \; ] ` 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
& ]. n" U7 Q# l1 r
import cudf, io, requests
4 g) R; Q; B2 A0 N5 A from io import StringIO
" Q( l6 b% s, l7 W* a
url="https://github.com/plotly/datasets/raw/master/tips.csv"
0 v1 x/ W" O9 J: p* C6 A4 n
& Y0 n8 W' q3 @) z# |; n
content = requests.get(url).content.decode(utf-8)
; S( ]$ ]: Y# V% C8 c; d$ R
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
' r" q4 b& `5 H* X2 j; W3 F% Q
[( u5 Y! e2 [; q( L # display average tip by dining party size
/ v( ?9 b ~1 o3 M. x0 \
print(tips_df.groupby(size).tip_percentage.mean())
- F% k* x3 u( N* k, k" @5 Y3 r2 c P& d
得到的输出为:
9 v# r* w& v, T/ Y ~, {( M4 I
* y& T4 u" p M# T: h) [; k( N
size
9 G" O+ J2 M" ^
# Y1 j- B! ? h P4 u. q l
1 21.729201548727808
7 v8 F3 C; C+ @4 Z# m' T6 \. w4 t
0 T: l5 \7 c0 M4 _ 2 16.571919173482897
0 j: g& N. }8 B* b! e
" V' Y+ {. i0 U/ l9 _0 H 3 15.215685473711837
3 @6 G. a4 }$ z! j b5 ^8 L9 p7 V: G# p7 X
4 14.594900639351332
; Q: l3 h1 R4 z8 v6 J
, `+ P# Q% B+ d
5 14.149548965142023
1 S c3 B5 E- f* h
# n& i6 D M# u7 ~: ~: R 6 15.622920072028379
9 m* f, s( v# b& N. \0 [1 f
3 V: }# |6 ]" b/ j& l! E2 W% i Name: tip_percentage, dtype: float64
& P; u1 o/ Z& b$ ~
0 @/ i/ g U3 }: K
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
( R: d. B. S# t( J9 ~ 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
, V% v6 j4 R( l! Y( C3 N 安装
5 J6 g/ M3 ?' [0 b conda
% d: R9 ~2 h' Q- F( K9 g3 C
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
6 F' P( C. A6 S8 ?. d% H
; q/ W) ^8 g6 G/ q) f1 b
# for CUDA 9.2
. y' n3 D! h6 \6 A, w1 M% W( w conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
3 ^8 U8 x0 t, _
4 z q5 w1 \' p( g
# or, for CUDA 10.0
6 f5 Z& l8 J8 _& ?7 o6 O0 O. D
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
/ E5 ]7 a9 ^1 |: j. M; B+ y
cudf=0.6 python=3.6 cudatoolkit=10.0
; ?, I! v: E$ ]: w s
- b1 Y k4 A( D- D
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
# v |* P- [8 L$ p" E
Pip
) S$ ?1 ?& c6 Q cuDF 也可以用 PyPi 安装。
. w7 ^9 ?1 n7 N+ P
+ I+ _- d; M: k3 F( o # for CUDA 9.2
* x1 w4 b7 I% j! {- R: t7 Y2 P
python3.6 -m pip install cudf-cuda92==0.6
! p `7 S8 g3 H9 U9 p- B
! P j- f- A# T # or, for CUDA 10.0
7 r: R& i6 r- k3 k) w python3.6 -m pip install cudf-cuda100==0.6
* |$ E6 c8 x f7 [
9 q. a) q9 |/ O: a W
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
2 s1 X" G" e) y& q9 H) Q via : https://github.com/rapidsai/cudf
( H3 Y7 i- P6 ?0 } 雷锋网雷锋网
' q, H4 b9 Z: {6 O5 W" q- r+ U
" D2 |4 j/ F6 |7 v$ J; Q. N7 X: z1 @: z5 W( y5 {7 E
4 {1 k* {! R4 X2 P6 l
" @0 G; ?2 h7 ]' C! ?$ @# x# z