1 d( w" d( B) P: O
雷锋网 AI 科技评论按,数据处理是数据工程师经常要面对的问题,今天要推荐的是一个和数据处理相关的 DataFrame 库——cuDF。
8 o+ P7 ]& V" k: ]& S9 k
cuDF 是一个基于 Apache Arrow 列内存格式的数据帧库,它是一个 GPU DataFrame 库,可以进行加载,连接,聚合,过滤等数据操作。
& Z! L1 j9 v- U
cuDF 提供了类似 pandas 的 API,数据工程师和数据科学家都很熟悉它们,他们可以使用它轻松地加快工作流程,而无需深入了解 CUDA 编程的细节。
: \9 G' x) X( C& p2 N
例如,以下代码段下载 CSV,然后使用 GPU 将其解析为行和列并运行计算:
$ J) e: }, K, u2 N import cudf, io, requests
- _" `9 i3 Y6 J0 g from io import StringIO
3 V3 M! i1 ~0 C, X5 C8 j" H
url="https://github.com/plotly/datasets/raw/master/tips.csv"
; \7 e( ]& A2 A4 b3 j) W/ b
2 v @- ^3 y/ n" x+ d3 m content = requests.get(url).content.decode(utf-8)
, T2 T5 ^' P/ f tips_df = cudf.read_csv(StringIO(content))
tips_df[tip_percentage] = tips_df[tip]/tips_df[total_bill]*100
. R, v5 e8 J* R1 v
" |" x8 F6 Q5 Z # display average tip by dining party size
7 @3 W0 P5 y! c+ G7 y" e print(tips_df.groupby(size).tip_percentage.mean())
* \* c3 {$ a" J9 K' e' _9 i
/ Z. m' a% ?8 n
得到的输出为:
) W4 x! x" R) [- R) M6 V0 i
2 U8 A% s+ j3 s% V* P size
# v8 m. c- H1 R, u4 J
8 N9 q O* k% l6 s
1 21.729201548727808
. j; e& c5 X4 F* \( m% l' L
7 v" v& v& v/ `
2 16.571919173482897
@) D% J( J" i" x; h. A% o$ a
' W# \3 c) q! ]& ]
3 15.215685473711837
/ `: D6 J) ?1 C$ o% Z& O' \- {% y9 R" | ^! W
4 14.594900639351332
R1 y2 r1 H! a# g
8 u4 @8 `# z* ~7 n
5 14.149548965142023
9 L0 j* A/ M2 G4 j! }( ^
( U' f) u, c* s. T/ Q: E+ x! e 6 15.622920072028379
# p: l2 O8 [) ]% ^3 L6 d' r" r9 R
' C: [" ]# ^$ R" ] Name: tip_percentage, dtype: float64
+ S2 q0 d6 ]2 l. c' k$ O) ?1 v5 ^8 o9 U$ C ^( {
想查看更多示例,可以浏览的完整 API 文档,或查看更详细的说明。
/ d: D+ C$ ^, e 那么如何安装这个工具?请参阅 Demo Docker Repository,根据正在运行的 NVIDIA CUDA 版本选择一个标签。
/ a) n& U- ~7 m9 ~ 安装
' `5 r* j9 E/ m* t) R9 W$ ^5 R conda
7 B" I# C% g5 d% B' s8 P cuDF 可以通过渠道安装 conda(miniconda,或完整的 Anaconda 发行版) rapidsai:
5 k: R& v7 z9 q4 o0 U1 ]9 x8 h( G: v7 I% c: c* n, W
# for CUDA 9.2
# E; D8 N- w' e, C3 n( q( a conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
cudf=0.6 python=3.6 cudatoolkit=9.2
. G+ p' o7 C9 N) C4 e* s+ A- Y; r8 U# J$ `
# or, for CUDA 10.0
% E9 ?' P( f2 q5 V! S
conda install -c nvidia -c rapidsai -c numba -c conda-forge -c defaults \
& k0 y- L; d) \) z
cudf=0.6 python=3.6 cudatoolkit=10.0
4 I, Z& W. A0 A: ]& n
/ ?# B4 r) l$ _( d1 g* @8 N3 Q) y 我们还提供从我们最新开发分支的尖端构建的夜间 conda 包。
( V8 ] t5 O; O( ~' T Pip
" N3 d' `0 F) n3 ~% l- Y
cuDF 也可以用 PyPi 安装。
$ X1 H* S! B p# ]. O
! a* u; i- V6 \8 s' D+ j # for CUDA 9.2
" R& A! t9 ~$ }# y. i$ ` python3.6 -m pip install cudf-cuda92==0.6
f2 `* Q1 ?8 A" Y8 Z8 z2 y( ?
. V* L5 S) Z9 \* p. f! I: J$ B # or, for CUDA 10.0
* A3 \# w$ z* H
python3.6 -m pip install cudf-cuda100==0.6
: x* t! `8 ^. Y( r: E+ Q
) x( \% c' I( Z; X 注意:只有 Linux 系统支持 cuDF,并且 Python 的版本必须是 3.6 或 3.7 版本。
# M7 `& i$ Z/ _$ b+ Z via : https://github.com/rapidsai/cudf
1 Q, ]6 {8 j& J9 O ?
雷锋网雷锋网
5 L S1 ]' \' K/ \7 t& @
: U4 ~6 ~/ ^5 S* e- q
+ \; z0 G- k& ~7 N% E9 I
7 {& S# n/ p2 ?2 i N. m1 |
3 }3 S+ ?) d4 M* P& n, F# l3 S