! K8 c" o, Q/ ?* ^$ p z4 y 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
9 p3 n, N) S" V$ z) C* l$ D
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
, P% e8 f, H' ]" a+ P- h; ]' ]* v% t, B cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
( ] m, F2 j0 `" K# t+ l& u
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
1 H8 d3 D% ?/ X6 M6 D( ] import cudf, io, requests
, a/ X0 Z' U+ X) f! y' y
from io import StringIO
- B1 I, l# F. ]% n& F' P1 }, ` url="https://github.com/plotly/datasets/raw/master/tips.csv"
- F! I# ^5 F0 u2 S. U' L5 V$ O! E y' H
content = requests.get(url).content.decode(utf-8)
+ p' S6 Q. o) U tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
5 O3 m+ |% y, O" e
- ~: C3 @* |8 R+ ? # display average tip by dining party size
4 i( S1 w- [. N: F7 y
print(tips_df.groupby(size).tip_percentage.mean())
# B- u3 s) t; }! B; Q8 g
- [$ h$ q4 f: C5 G8 k) ?0 u( v0 L
得到的输出为:
' Y: H, O+ q9 N- U! U5 c3 i
* [" ~) Z! |" e2 K6 ? size
- J. s, t6 d5 Q8 _) O
' }9 ~, u6 B* i7 [) J6 p' G 1 21.729201548727808
" ]6 U/ ?2 S- T9 q- ` v7 c2 u
( F9 @1 m" D& r! U 2 16.571919173482897
m, \7 Q4 [ K4 c6 `# @ ?) z: y6 y* P; v
3 15.215685473711837
% N- @2 z" i6 z) X
( u; `- g- r5 I( U 4 14.594900639351332
9 u: j& f9 Z1 q5 `
m% Z; k f5 i) }6 A' r
5 14.149548965142023
' L; N- F5 f4 V1 W4 ^6 |2 n' L4 C t8 P: R p$ H
6 15.622920072028379
% H/ {8 Y) x6 g# G) A* d9 `! W. b8 _! E8 v9 M/ d5 ?" R6 L
Name: tip_percentage, dtype: float64
( @; ]+ z j4 d/ X4 ] l$ z
8 H2 \" c, w, V6 I) F# {' I) z1 Q 想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
, C' S2 g# i( M2 o h 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
; q; X; C6 v, d' \
安装
6 h! r7 a( Q6 L2 a2 n" h# k
conda
8 k! `( U. U8 G: Y8 m1 u( ?) O cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
8 \: |! I/ \& s: r/ l# o$ N) L, M+ a
! k- z% z" I1 b* r$ ` # for CUDA 9.2
0 f8 S- \) ?. T% [" V8 ^
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
! G) {/ ]: Z* \$ a# `0 M; L9 ~" S6 N, I) L& g7 ^" c
# or, for CUDA 10.0
. M! E8 I& s) p* o/ B& @4 k4 M conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
4 v( V" m% Q6 z1 a% i6 [* p
cudf=0.6 python=3.6 cudatoolkit=10.0
) {0 \% |! V1 A) b7 p
# G; e# H# D. x' w7 K
我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
2 q4 X. |, Y6 _& B Pip
# M" ^( j& X- |4 q+ ^- L7 I! ~ cuDF 也可以用 PyPi 安装。
$ l5 p/ F9 A" K) Z J4 R% p6 i
8 w, ?$ ~. v% Q2 w3 y- w% W # for CUDA 9.2
0 L; [; y& B( [: q+ u$ a1 ]3 d python3.6 -m pip install cudf-cuda92==0.6
# X4 O; V3 [! H8 a* O# F, l
* p8 d/ I2 o# W7 J. G: ^& C$ G6 L # or, for CUDA 10.0
- _0 _* }; E. f
python3.6 -m pip install cudf-cuda100==0.6
3 w$ \. g) Z2 ~( H2 {
, ]! _- T* B8 p9 b- F
注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
' a$ b3 M( n3 V( Y: w. r; p via : https://github.com/rapidsai/cudf
( E6 Y( k0 Q" o+ Y% F1 j 雷锋网雷锋网
1 F3 @: u) }5 J1 N/ a$ |" a
5 Y; C2 I0 o4 k8 u9 C D" d* J7 n( ]. [
6 o; `2 W" t- j$ Z# h3 h1 U4 |7 T S0 y$ L3 E$ m