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

[复制链接]
: @2 A; G9 Z9 Y' z
3 q$ q, P/ y$ R" Y
3 e ~8 C6 ]; z5 S: _0 y3 l( w
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的
0 P3 N: E+ s! |
3 \! ]/ n+ a5 R
( q: ~% M# \% W( h
! J+ X0 Z ^( x" p! `. j9 Z

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

2 {% E7 Q2 w- c* u$ u8 e+ R

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

& E1 m+ { y/ |' N% W

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

1 F& x; w! y0 X! X) j( Y. O

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

( ?$ I& h3 r' `7 Z! _

import cudf, io, requests

1 l. D' G; ^) L9 s& u( z

from io import StringIO

% W* M! D2 n/ \5 t; {- C; e

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

4 |/ @" \: {& o8 j* } & f* {! \0 i; H, S" _* d; y: X

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

/ o- M9 G. j6 d4 H# X

tips_df = cudf.read_csv(StringIO(content))

tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100 0 r% N" ?3 }! f' j9 N , F& H1 g/ e& S( ]

# display average tip by dining party size

7 x, N' E2 C v% s* k5 z }! K9 T

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

# [$ q* H5 F5 `% @( _; b/ `/ Y# ~. {' x, A, [" a" f; I" @: A

得到的输出为:

$ y4 ]) Y+ }1 n8 t/ A5 _& h8 F6 G( N3 A4 T

size

# W6 |$ r5 U8 m+ r& J1 k, t3 v% c( V' t) `

1    21.729201548727808

. _% n9 z0 ^9 u1 B3 `5 s* G' ^ . R- Z5 p7 e9 ^3 R4 v" p

2    16.571919173482897

2 _' s& Z# I7 V& f3 |8 @& s: ^; u/ M' u7 @$ e8 E9 A

3    15.215685473711837

0 r, l/ e( v: `5 v5 a& G: k ' k1 X2 @( W* D

4    14.594900639351332

, ]$ {) ]- e- @3 l( H1 r' W1 Q* \8 }1 F" S p# A

5    14.149548965142023

8 g% D% q8 h' b! a. h4 c M3 b. d7 ~+ }8 [3 G0 E' u- x6 D

6    15.622920072028379

5 l6 `% z. f" k+ n8 o; X4 N+ a7 {2 }7 c5 j

Name: tip_percentage, dtype: float64

3 i, K6 j" {2 ^# P: z* j* H' X( w6 {* F4 a2 Y* g7 w4 m- I

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

* B0 }% b5 x( |5 |

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

, y- r1 c- d; }, j

安装

/ m* B1 K- H$ Y8 Q% Y

conda

- m) q7 a0 ?- ^' Z, ^3 p7 A" C& j

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

- _! r+ Q+ |0 d 7 e9 U5 s, E& f1 y4 _/ k

# for CUDA 9.2

% y$ p. {' x V) c

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

   cudf=0.6 python=3.6 cudatoolkit=9.25 m( I" v- S; q) ^% E& d* g o4 z 0 u. S0 |# x$ |; X

# or, for CUDA 10.0

+ v1 @+ O/ z* a. B3 A

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

! {, F3 K" D( t5 |# |

   cudf=0.6 python=3.6 cudatoolkit=10.0

+ J# N7 t8 q+ S- K2 _' U$ w0 x" s6 g+ N + d6 t z/ Z X4 O

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

+ Y$ Y2 q$ t* i) t7 m% n

Pip

6 v& I8 {) w' O7 g

cuDF 也可以用 PyPi 安装。

" L2 F- z* e& G! x8 e' \8 q * L1 q5 Z- e- q1 t. K

# for CUDA 9.2

8 d- i) ]$ G/ _4 Y' M

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

0 M' N7 S$ `7 H- D8 G% H5 g 0 E: C: x/ E/ V

# or, for CUDA 10.0

- D& A7 M4 `& w8 g6 K2 k6 X

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

& h; f3 H, S# ?- Q2 | 1 O' _. ?: E5 R

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

' _) a- H+ p n4 w

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

. |6 s+ `0 C4 j1 u/ i

雷锋网雷锋网

+ S9 n& B& d: A3 a" t; R ( T$ q+ n) [- s- ` , b* V2 e; \6 t% X* j : o/ v( Q; k6 | - O$ j- m! k3 Z
7 c: i7 Y' J. g5 H
/ r3 e% A% m: ]; M
0 N* _. ^! O- _: b8 T& b+ N6 D1 c8 X* p) G! g9 t# x / J* M0 u! L0 e5 E5 N! H6 E# p2 h! H3 G: s9 j0 M" z ( \/ k$ p3 Z& S0 R
回复

举报 使用道具

相关帖子

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