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

[复制链接]
; C& E* \& c/ o' @
6 g3 q5 a6 d, e- L) m) Q- v/ N( d
- F$ @ ]+ k+ N$ r* O
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
3 w8 s+ _$ E$ u* x2 n
' |% q! P* Y3 c; g
5 S6 S' Q' B+ `' j$ x9 y- L
% o0 t4 o7 B8 E% Y

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

; M2 x9 e/ B1 s! f* \( D

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

! u5 D5 l' [( s% }' Y

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

7 e. P; A* b1 p3 `* P

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

: Z( R$ `9 N- D1 Y) y

import cudf, io, requests

8 ^; o: ]$ T3 `, j

from io import StringIO

, v! m9 D4 B: g* {& t

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

' I. ?4 R; F" Z8 m3 D7 q7 T; m4 O 0 v8 ?9 A) s4 b: i( T; {, F

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

0 m& G6 ]+ u- i6 b8 w( w$ [6 `7 x

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100, ~* s+ a- S3 T' W0 I: f% t0 T8 w 7 i% B! Y9 U- G [2 R& y9 H- e& q

# display average tip by dining party size

1 {, w& |: A( L" c/ O

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

: l# A q" Q8 q0 Y + J! Z; w3 {$ Z8 y7 r1 ?

得到的输出为:

2 Z5 P( n" c$ ^' }* I3 V4 y+ O& E% `. |; L: Q% H; ^9 z

size

2 F6 p: A2 Z. ^) G B5 e z: k) `1 o4 ^8 m

1    21.729201548727808

7 l+ O' k# N- P t* `) S 1 E: m! _+ h" F/ [

2    16.571919173482897

$ \$ Y3 V1 ^; M& d7 k. E0 e0 W & r! a! g/ p, [

3    15.215685473711837

- n5 H w y% R! m 3 F6 q3 H3 _+ J% v8 O8 B3 h

4    14.594900639351332

- X. `4 j- b. E$ C5 y6 X* i4 U5 Q/ L" u; U

5    14.149548965142023

i; T- q$ y7 j- e3 e. p 3 s/ e4 I* z0 I' R. L

6    15.622920072028379

: i; o0 q S l0 B $ P! z9 L9 |3 U# @- E

Name: tip_percentage, dtype: float64

: m& l. L: Z, O& X F- Q. G # N. c* T- ^: N+ ?! L

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

: m4 C" D6 a4 z7 V0 w

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

! ]4 e% i/ ^! i) c9 d; b- Z

安装

; {$ j5 U- p0 ?% S7 w) K

conda

) |' Q) g M7 Z6 X: a

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

1 r/ r3 r0 j% F$ x/ l7 w / n1 Z+ t2 c9 @5 n3 q

# for CUDA 9.2

+ y. o& S6 s* O7 G

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

   cudf=0.6 python=3.6 cudatoolkit=9.2 : w3 f/ q1 `; g# F$ I2 K , k! C) @' y ]8 K4 d8 z

# or, for CUDA 10.0

2 \/ H/ x7 s9 r$ ~7 m: v! F# m

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

J; Z/ H9 y5 A% [

   cudf=0.6 python=3.6 cudatoolkit=10.0

, Y% k3 y! V# a. `0 u ) Z( ?( O1 h% J

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

; N% A! ?: h! U1 c1 P

Pip

1 K& c0 |; N- W! V- e0 t

cuDF 也可以用 PyPi 安装。

3 u3 i) Y7 c0 B( W " S2 } |5 G9 h

# for CUDA 9.2

7 E$ a2 D+ {$ S8 W1 u

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

1 h) B5 C' g" T" O8 a$ H( G' U! T: r+ a3 q* G/ `9 Y/ n0 \7 M

# or, for CUDA 10.0

+ y5 W- z, J* H% B( p

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

* w, F1 X; w( w3 h* c 6 V* p" z$ V' x- |/ L2 u. t" P

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

$ `% d& Y6 `- @. U6 |

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

2 d2 F4 O7 n* I

雷锋网雷锋网

: M: x3 r! f* H, A/ p/ T7 j- R4 q 9 D+ _) J( }4 v3 t7 V7 F , h# K7 |$ H/ N( Y+ ^) o $ I, N5 d& e" [5 r% X6 E : A& N" v$ k) W, b, {
0 O9 X! L5 N i4 [
- ~, s, F# O( j' Y( J% ~8 e* u
5 ?' {7 K! s% ]4 y, S6 g4 D! O ) v* T3 n; a: c9 T9 @/ { 3 ?2 C7 H) n1 c2 q7 V ) F+ i5 E6 G! y& F( x- w' J( _ " `- I+ T3 S! f$ U4 Q( H/ i

相关帖子

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