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

[复制链接]
' @& [$ K1 j9 y$ G. ?
9 D5 c* J3 a& l% V: L
: G6 i2 S( ^7 e3 i+ i% Z+ Y! ^
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
3 F& C$ G$ C* Q+ B
1 ^; F$ n' e* T% Q4 a& E8 R% ]- ^0 \
- n+ V' R* s! \0 @" b3 [; z
; A% p* d- _7 P7 F' G, S/ C

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

1 c& M$ K* t, t

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

7 o7 L! X* G6 Y4 x

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

0 T0 G2 ?+ r9 }2 y

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

. j' W8 L* u8 c% M0 d2 K

import cudf, io, requests

3 |, B7 v; ~7 F l; J. ^: Y1 q

from io import StringIO

7 B! ?' H4 G7 v" b! D

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

1 l: o9 o% r. J A$ t% B : n/ B' X O6 N% [+ o+ d- {7 a. p

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

! X$ R3 w7 E; x" @. Q

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100 ' s9 Q8 O- d, O$ P7 f; `: t# W' F8 Z' o9 Z8 E

# display average tip by dining party size

2 c: Q3 J$ d) X$ {* r9 C, R

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

( J$ p" s! K3 J( X8 I' d9 Y! T p2 b, V: [; M

得到的输出为:

6 P5 A) f5 }$ B' P. d6 T - G* \& Z9 `. @8 g6 T/ n

size

) u0 e: J2 b6 [ 1 l# T( ?, ?& N, K' q1 i; c$ O

1    21.729201548727808

- D% |. G' q. w3 e 7 s0 |( \5 g" y& k. \0 Z

2    16.571919173482897

( h8 I1 G% Y, ?' h2 z ) k2 N! C% l( t# O+ ?* a

3    15.215685473711837

% I& P5 t- l0 b9 J& _& a 5 a3 u5 l7 [' T( X& u; U, `5 Y

4    14.594900639351332

1 T' b( S; \: r/ C, M1 k, ~' h0 A & g! A/ Q! T$ |* Z9 W" L

5    14.149548965142023

( f9 e# s N$ e1 D . _7 u3 H/ Z, W! m" D

6    15.622920072028379

3 @3 t6 E- ~* S6 } 9 C! }$ _ F2 B9 i

Name: tip_percentage, dtype: float64

' N. h6 t4 z5 ^, j+ s9 A7 {' f8 q e' t+ P' E% ?- J

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

$ p0 u* Z) Q8 A2 b$ i8 k

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

4 m" c! w' |; r S8 U$ U& e

安装

9 P; T2 ~* w; d+ v

conda

' t/ j( Z$ \: ~# E! f

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

. a7 ^' C' K1 x8 A* Y2 N9 M4 h5 F; N+ u* `

# for CUDA 9.2

. C; b: X0 O* T$ o2 p/ N/ J/ K

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

   cudf=0.6 python=3.6 cudatoolkit=9.2 & P6 }- F# S) ?0 b $ W% } x3 y# ^- F C' i1 s. O2 h

# or, for CUDA 10.0

% l x. Q2 |/ S- U

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

! g" F8 X$ v/ O; \6 ^8 n% K4 f* R

   cudf=0.6 python=3.6 cudatoolkit=10.0

4 B$ R/ @/ M" D - j/ n4 Z9 H5 K4 k& B7 ]

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

, c! }" `: H1 A* }9 g8 m0 L8 Q

Pip

: b4 @- ~" | v. h& g- ~

cuDF 也可以用 PyPi 安装。

. S4 \! E8 h. T9 r/ _% N+ a# Q2 d1 s ]0 H! D; q# G, ?

# for CUDA 9.2

# U7 w2 [2 c3 t) ~$ F, _6 a

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

$ Z* g! D d% u: f7 [# j5 P6 o1 o# ^6 g( n' g

# or, for CUDA 10.0

( r/ i) ~, c$ J5 v

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

* _, T; J% ?% {) c! x / ?8 l) ^' D" H6 S. E7 P( Y' p

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

4 B% }/ d6 h( E$ T# ~

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

4 h2 D" k+ v% u& X5 s' i

雷锋网雷锋网

/ q4 w5 B7 k. r0 @+ I. u" w, \/ x$ l) d 7 q3 n* v, t1 H2 |0 v% G' S$ t6 L e- R) { / o% V+ Z( r: y6 A8 b) A4 a2 g' J, S J0 A0 Y' O
Q6 b' h8 m* A
$ I+ Y$ }+ S4 d* D' V
4 [, w9 u1 _+ t! U* H; w # G7 ]- \2 \! [' T+ \ ) |* B4 F% d( m( {7 N0 Q 3 k W. J* ^7 \4 D3 B9 A& U: \! b+ P- _9 n# a1 b$ r' j
回复

举报 使用道具

相关帖子

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