! 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.2
5 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