python dataframe 选取字段 特别慢_从parqu读取dask dataframe列重命名速度较慢(er)

这可能是因为rename方法作用于dataframe的每个分区,并且它的开销我认为相当于dd.rename

考虑一下这个:In [45]: %time (dd.demo.daily_stock('GOOG', '2008', '2010', freq='1s',

random_state=1234).repartition(npartitions=1).rename(columns = {col:

col.upper() for col in df.columns}).CLOSE.mean().compute())

CPU times: user 11.7 s, sys: 4.65 s, total: 16.3 s

Wall time: 9.23 s

Out[45]: 450.46079905299979

In [46]: %time (dd.demo.daily_stock('GOOG', '2008', '2010', freq='1s',

random_state=1234).repartition(npartitions=1).close.mean().compute())

CPU times: user 11.3 s, sys: 4.63 s, total: 15.9 s

Wall time: 8.8 s

Out[46]: 450.46079905299979

当partition设置为1时,重命名开销似乎不像示例中那样明显。在

更新1:添加拼花地板示例

^{pr2}$

更新2:显式添加列

根据Matt上面的回答,避免读取拼花地板文件的所有列如下所示:%time dd.read_parquet('df',columns =['close']).rename(columns = {'close':'CLOSE'}).CLOSE.mean().com

...: pute()

CPU times: user 4.65 s, sys: 801 ms, total: 5.45 s

Wall time: 2.71 s

类似于:%time dd.read_parquet('df',columns =['close']).close.mean().compute()

CPU times: user 4.46 s, sys: 795 ms, total: 5.25 s

Wall time: 2.51 s

Out[110]: 450.46079905300002

Aside:rename+task scheduling在我的机器上的单个数据分区上有~40ms的开销:In [114]: %timeit -n 3 dd.read_parquet('df',columns =['close']).repartition(npartitions=1).rename(columns = {

...: 'close': 'CLOSE'}).CLOSE.mean().compute()

3 loops, best of 3: 2.36 s per loop

In [115]: %timeit -n 3 dd.read_parquet('df',columns =['close']).repartition(npartitions=1).close.mean().compu

...: te()

3 loops, best of 3: 2.32 s per loop

应用于500个分区,大约需要20秒。以防万一,这种事将来会有帮助。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值