cuDF:加快数据处理流程的DataFrame库

[复制链接]
. k1 |% W$ G. F1 G! x$ w: H
( U" G: e; d: H2 K* ?7 {
! c' O1 P5 b# _! Z
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
- f& n; _1 ^0 a% _2 b& V- w4 r
& I# Z, B! S$ B, j# D
2 N# R. K( I4 m7 q8 I
4 j9 W8 ], Z) v9 N! g" J3 Q7 R

雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。

8 U: M3 E) j% s" I6 ?

cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。

+ H& ~7 _4 ~" |

cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。

( F0 f; z9 p- s1 B/ S9 T0 q

例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:

1 _+ m3 F5 g9 l5 T0 t2 f5 n, A

import cudf, io, requests

# V% d5 N# L2 `# U5 v. E

from io import StringIO

1 X4 }- C! o3 @: \( m" b

url="https://github.com/plotly/datasets/raw/master/tips.csv"

; {. h' k0 M6 `9 a / ]; |: |& |2 N3 k" Y9 w

content = requests.get(url).content.decode(utf-8)

0 d/ C; J6 x* f/ h- m1 O. t; q+ W2 t

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100! x9 A* c' V! B) X5 ^/ b, o $ Q4 o _! K9 A; z

# display average tip by dining party size

. h* V' T& S! @. }+ ~! @

print(tips_df.groupby(size).tip_percentage.mean())

& l* l. p. W' Z4 T1 G% |6 F# V 8 a- a) s4 `1 ?3 w, y& }

得到的输出为:

7 o, k/ I* u- {' @" O, E- c D # D# `4 p+ P0 x" G! x1 q

size

4 K% E& m( ?8 Q! @' W2 }; }& d' l5 H |# {

1    21.729201548727808

. I( ]& F+ b8 E ^0 A4 |1 E V8 U ; p+ o: Z6 S, f5 S

2    16.571919173482897

( e7 `+ I: n" v8 v! Y % r( [: J2 ~$ b; V7 k0 f

3    15.215685473711837

( P' a% I5 Q8 y. x. | k* e7 d5 ~4 t& w8 v# {6 q

4    14.594900639351332

* {$ b$ W J5 ?/ h4 [/ k# d! T, a2 }) [' N2 Y, H, N9 W' z

5    14.149548965142023

3 t" \9 p4 U/ Q / }! s/ Q7 _+ _3 m4 D/ R' e( v

6    15.622920072028379

2 G2 m' M& ^: @) L8 O) L! U . H4 o; c, w2 \( t1 j- X1 Y# t

Name: tip_percentage, dtype: float64

9 L8 X+ f* ]* S 8 b$ t7 a3 t. K! }' t, K) I

想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。

]: B" J/ k; t) L; O- f0 s$ Y$ z1 Q

那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。

: K N) ~& {+ W6 B: @" p

安装

2 |, I/ y3 h) _0 U+ ^, X) G, H% f% i

conda

; q) ?$ c2 O- S# t; J/ Y2 ~$ `: `

cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:

4 u) O- _/ c: j! @ [ $ M8 i9 L0 S( X2 U* c

# for CUDA 9.2

+ E5 s- v+ q/ K6 Q f! V

conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \

   cudf=0.6 python=3.6 cudatoolkit=9.2; k/ b& z2 i/ q) J1 g4 s5 F* a & p+ _3 I$ @5 t* [

# or, for CUDA 10.0

% l d% [' G' f: ~2 T# j

conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \

6 C% B4 w7 Y8 \& A# o4 n

   cudf=0.6 python=3.6 cudatoolkit=10.0

* ` X: j6 @0 L, z# h9 e& D! b . U+ E6 u/ b' B

我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。

5 w |1 P$ q- ~, h$ r

Pip

% {7 c0 v3 L! G+ W3 g3 Q3 v

cuDF 也可以用 PyPi 安装。

0 D6 W# O1 A8 y) \5 q 5 D" p# f' T4 E

# for CUDA 9.2

$ Z: r4 q1 |2 S5 R9 S0 n( i) k

python3.6 -m pip install cudf-cuda92==0.6

8 w6 G9 o: R3 t# |. a + {5 {5 }4 N$ C: y

# or, for CUDA 10.0

7 C. v( h5 a5 U+ ~) `; ^1 V( E- d

python3.6 -m pip install cudf-cuda100==0.6

, v o" D6 _& K, y) D 4 O+ Z- \7 h7 q* Z" f7 F, K

注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。

+ a! Y5 f) S4 M$ U0 e

via : https://github.com/rapidsai/cudf

! L7 Q0 }+ B7 d; o' V

雷锋网雷锋网

* P D; v9 E. h# U8 S5 \; O/ E; ` & H7 r# G& t5 \0 m, M9 {: H( y 9 k5 p4 X2 l& Z- Y4 k$ W6 \! {1 R9 {% i / I% D; W5 D$ l8 i
# \1 y1 }/ U7 N) ]# x* b
/ ^( o- ~, O5 _+ W+ _; z2 Z
; s8 J6 X: Z5 n( U " a. \0 V( Q ~& l1 a' B & I4 N# b; e& G# R1 s x& M- q % E3 i8 F$ a" X$ N8 V! P5 {/ f& a 5 A6 w( U& f$ X8 T6 S
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
礼子
活跃在2024-9-12
快速回复 返回顶部 返回列表