, I/ o. y/ R. I: H- F 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
\7 x, k" a @! Z& e6 `& Z
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
+ y# m* K% V# Q, {* N
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
6 J6 j6 R: T# k9 ?% \
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
! b9 K6 c8 b2 P. s$ R7 ]' v; ?' M
import cudf, io, requests
2 \# f2 p- l. ]; w% U1 [4 {
from io import StringIO
* @1 V- O) `7 r z
url="https://github.com/plotly/datasets/raw/master/tips.csv"
; `/ r8 K, |0 O, \$ e0 w' g; s4 j* B* [! i: E+ R
content = requests.get(url).content.decode(utf-8)
+ _& a4 w& R( U3 c/ ~% F% W tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
9 l. r( t9 Q# f8 e4 v$ I! K
; f3 B/ K. h1 |! G' B # display average tip by dining party size
5 i1 l5 ]6 `! N5 p
print(tips_df.groupby(size).tip_percentage.mean())
; v& y8 X% f- ?5 c% H
; s8 B. Q7 F1 d7 b 得到的输出为:
9 n! P' s3 \; v9 {" t* `0 g5 d+ K& z. m+ f, t9 X* j. r
size
" ?7 ~, t' k% F, _) L3 p$ a) V
! G3 P* [# @) ]. H8 L. p+ w" V 1 21.729201548727808
$ L, g7 F8 A8 V& z T! b% f# w/ L: Q1 V4 b
2 16.571919173482897
$ E- u- ]' h3 _8 ^
& t3 E: _. g/ ?+ F1 U 3 15.215685473711837
- Q2 H; F* B0 c) _2 m/ r
) ?$ f+ `1 f( G |5 [1 @/ t, J
4 14.594900639351332
! c: ^/ M+ N. j8 e8 A* V3 H! y
- U$ H; x& r4 d* s3 q 5 14.149548965142023
+ A' \; ?2 a( K* q, J7 S0 L; J4 z* _6 `4 h5 E$ g
6 15.622920072028379
' M# i% j, j3 e5 k
8 U) v0 B: A) M& Z# a3 X Name: tip_percentage, dtype: float64
+ g( M* O0 Q* ]3 g* F: Q+ ?. s0 |" Q9 L9 F/ r( X8 \' d- h
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
1 `" ]* g* Y4 Y4 A4 A: i* l2 Y
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
" r! e: s' j/ i9 N. J& L& P m% ` 安装
$ V+ W( p; R1 Z' S9 F) \ conda
; t. t0 w$ X; l2 G/ O. Q. |2 E
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
' @, `1 f q+ h( E
2 H1 O. W$ r2 g+ Q* a, H+ a # for CUDA 9.2
' ~; c6 i+ \, } k" H( H: f conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
% n9 k# H4 H9 z; Z, {( d: i3 V" {6 n
# or, for CUDA 10.0
6 o B7 k' ?; g: T
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
6 k# Q( ^% y2 X
cudf=0.6 python=3.6 cudatoolkit=10.0
9 M2 }. \, @" u9 s* r; a
1 _! G0 r+ w1 W. `! M6 y 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
+ o% W' s2 @4 L4 F. S. m: `4 V Pip
6 V1 n/ r3 h! }6 o2 |6 Q& V cuDF 也可以用 PyPi 安装。
* B5 w% R1 ` \1 k, W6 N' }7 q( w# x- |4 l8 e' e" P
# for CUDA 9.2
( B( ~9 W2 C4 ?3 g6 `6 I
python3.6 -m pip install cudf-cuda92==0.6
) _& }; U; X9 q2 ~# }# o1 u+ [( ~7 D8 @% T8 `& X" O
# or, for CUDA 10.0
# p4 `& q' _; c5 G' o! P python3.6 -m pip install cudf-cuda100==0.6
# C8 q! \0 X! f. \& I( m, R% ]4 W$ Y, k
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
+ c' A. q! M- t" Y
via : https://github.com/rapidsai/cudf
3 z0 X5 j8 W- @& L! h7 g( p
雷锋网雷锋网
4 M, _* C7 _# \# ~6 |+ X/ {
2 x* ]. K, U6 Q/ x# d5 K$ u3 v2 J
0 q* q+ u3 b# a& E3 [0 g0 s' Y3 n' n0 q: P$ K
) Y0 t- Q2 K. V9 S! j; w/ {; ]