, a1 W4 y# E5 n) h 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
- l) Y) Z6 Q& @/ g2 ~ s) D6 M cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
7 Z8 [. {+ X3 a: p6 e% u
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
- g4 M) H/ a5 }' i) P 例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
0 Y$ [7 ~; J8 U) U! n' [ import cudf, io, requests
! W( j& D: x: W! R0 [ from io import StringIO
0 ] w: m9 O! r t
url="https://github.com/plotly/datasets/raw/master/tips.csv"
8 i% W7 o7 g8 l8 a
; ?6 t- b$ E& q' x. {" u9 U content = requests.get(url).content.decode(utf-8)
* Q+ _$ M; {) V
tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
T) ^6 S# ~, M/ z* N- |! @
) |* B7 @2 m: a ?: l8 G3 L; R
# display average tip by dining party size
, d6 {& ]0 d9 P5 f" {
print(tips_df.groupby(size).tip_percentage.mean())
2 P/ T4 X' Q( Y t" V0 c: ]6 A+ Y
% m0 W1 M* S2 a) {
得到的输出为:
+ Z7 k" r. G/ v r3 A
+ v# w3 `- o( B t: A. W
size
2 h) ^( w- b( }1 n% E( g3 \
! ]5 k5 S1 m9 ~4 N
1 21.729201548727808
% B( w+ C# A, ^9 o" m/ k) y+ o, `/ i; O
2 16.571919173482897
( {& o- M( r. l/ ~* B4 X
5 g8 { l$ J, Z% E* E+ j
3 15.215685473711837
* o% g% J& C' O3 {9 r* U$ {) Q! a8 o9 f6 ]8 K$ Z1 C
4 14.594900639351332
# F$ }- L& \1 a
! X, \: I4 Y7 v1 @# @! H' | 5 14.149548965142023
' r/ I% L# E7 U9 F F4 i$ _
( I$ e9 q! E9 Y% p J5 u- R 6 15.622920072028379
7 E& y- V# n+ @
8 k& a1 ~* M) o( N Name: tip_percentage, dtype: float64
1 E, x+ L4 ^0 G; |. a
) Z3 D3 C! N( `# z1 j# ^
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
1 m/ d7 H' n1 u. }) X2 j6 [" A: |& o
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
+ [# a5 z; N- ?" |3 s+ ?
安装
0 V" ~5 o* Q) u" K# I conda
- V& j( B1 \( s. s$ s
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
6 ~! F$ X. K4 } W; U. S
) |" a' Q: G% ^8 D$ X* \2 M0 i
# for CUDA 9.2
, P/ Z1 A8 w% g* [' I
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
# ?6 [* \0 Z/ p( C' Y$ }
6 z% m+ H! E' {9 l7 c, A # or, for CUDA 10.0
; d: T7 e- T( t0 d, }" o
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
6 U: w8 D+ b7 X2 b cudf=0.6 python=3.6 cudatoolkit=10.0
! _: z3 P- N6 V# ^! z6 L
H( A# v! |' n- I0 U" w0 Q* s! l; A( u
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
9 }: b& o# U" l Pip
7 D* C: ^: _' D* w
cuDF 也可以用 PyPi 安装。
3 w c- A8 n+ ?% j2 Y, P' N/ R) p9 d- l8 D& a# \
# for CUDA 9.2
. \# k5 ]7 ~2 [8 \7 x python3.6 -m pip install cudf-cuda92==0.6
6 s9 o9 F" z) J7 `4 X& t7 v# K8 K; Q
9 W5 C- J1 n: R: E
# or, for CUDA 10.0
" `* I1 S0 n5 L" v& I; w python3.6 -m pip install cudf-cuda100==0.6
0 Q% M! K3 E' }6 C5 T8 A
% P. y' u5 Y! H+ ]) m 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
% R+ p" j9 n' V" x j via : https://github.com/rapidsai/cudf
6 _! B5 e; j; @+ L& i; p 雷锋网雷锋网
, N; V" B) {2 [, B C. g
! v( ?0 S! A2 ?
' h( G# g" m4 S/ H) b q5 [, p
- @: t s0 Y) k$ b0 M2 k S
: h. _, g9 x# g, T9 _