4 E# F5 J) W2 C4 G( h 雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
5 t" @! u/ K W" @0 Q+ P- z6 H
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
* U: x; w! D% p8 p* O0 f6 P# y9 j3 ] cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
0 z! O! I6 w H- t% d) `( }4 o
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
2 G7 z a- S8 K import cudf, io, requests
& m5 {) G' C0 D# k
from io import StringIO
" N2 j) K+ w/ M& l2 b1 A) B url="https://github.com/plotly/datasets/raw/master/tips.csv"
% q% V# X9 Q! _
6 J* p! N7 r, u) U9 n9 n L- L! j content = requests.get(url).content.decode(utf-8)
; k: I0 f! V3 v tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
: t. d" Z M7 l6 |
' h( @" G- v9 Y6 b* L # display average tip by dining party size
6 c/ k1 O0 p3 Z9 x1 b) X! X1 ?* I print(tips_df.groupby(size).tip_percentage.mean())
6 x% a& H& [- a! n0 C8 \, Z- f1 E$ H$ X% R+ g9 ?) i
得到的输出为:
3 Y$ p5 a/ ]$ S u" s. W# W9 H8 O
size
; O, v! Y% C$ @' f
/ b; j9 u, e, Z- T. u9 l# i* r 1 21.729201548727808
8 F" _# ^' B8 n$ {7 l1 D$ v @8 }! B- _: G
2 16.571919173482897
0 g& w/ A3 R* r+ k* v+ B4 a
6 h& Z$ \& y* Q 3 15.215685473711837
1 A( L, f! n4 F# f4 s4 v
+ \7 o. @8 a1 S 4 14.594900639351332
- a0 n! F1 |/ x" {2 y* m
6 U, y" d, c3 z, @- `3 ]. F0 y 5 14.149548965142023
+ z. T7 u# Q+ \! k2 @
( N3 ]) J: {; C+ o) e& U3 J1 E9 N 6 15.622920072028379
4 K* L. d K6 r" F) D6 @
3 H1 G3 x$ f# I* m Name: tip_percentage, dtype: float64
3 |, a+ k9 g% I# `1 H
: V Q7 K8 \" S1 u& {
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
% ]5 g' m. M |- `% d+ w* L
那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
, }# g3 j+ S7 c/ Z# V% Z8 Y
安装
; l9 L2 W2 f9 o& v6 p9 ?
conda
* U$ `/ f) o+ n I; J% t) w
cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
* p' ? ~# A9 I k4 f2 L: G
& K( i7 Q7 |5 | # for CUDA 9.2
! G) K) i. G! V7 ]0 f. G conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
7 F+ ^. W( m) x# S( ^2 R {6 g4 i) l( `6 J: [
# or, for CUDA 10.0
" R' A8 D# _9 o0 N, @
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
5 y: \1 V$ V- ~3 B6 o cudf=0.6 python=3.6 cudatoolkit=10.0
' C+ B9 A& X' G0 x
6 v' z0 ?- w) h6 f/ V0 ?! {# _ 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
3 i: ?$ _! k5 ^4 ^/ x$ o- \
Pip
' {5 `2 |& |2 }+ S cuDF 也可以用 PyPi 安装。
. w6 S3 {5 r P2 x' ]6 ]9 P1 [3 e6 y
$ P7 D' O& ~7 W [
# for CUDA 9.2
0 E" D1 n T1 p( w3 |9 [; T python3.6 -m pip install cudf-cuda92==0.6
. R4 q8 F0 `, T' y1 N; B- `. B W/ r: q3 z; l; t: p2 m
# or, for CUDA 10.0
& D/ v& [3 G, l! [! t python3.6 -m pip install cudf-cuda100==0.6
, \/ C3 n+ X# _# x8 Z
; I$ Y, n( w, C 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
. x/ T5 H( j- E
via : https://github.com/rapidsai/cudf
+ a* T! ] V5 V7 x" W% A3 j
雷锋网雷锋网
8 {* K; g! x9 \3 ?; f" K1 f: R( l
0 h8 R/ T- n1 s/ y9 ] l) n) X& d2 O, q
. U0 X- Q, K ]3 _* \( T' _