Python2在数据帧中选择数据的速度比Python3快…为什么?

2024-06-16 12:13:02 发布

您现在位置:Python中文网/ 问答频道 /正文

在从python2切换到python3之后,我们注意到我们的生产系统中有很多速度减慢。我们能够将大部分减速隔离到下面的行…从熊猫数据帧中选择行,我们用于窗口信号

ix = ts[(ts >= start) & (ts <= stop)].index.tolist()

当我们在Python2.7.12(pandas 0.17.0)和Python3.5.2(pandas 0.23.3)中运行相同的代码时,我们会得到不同的速度。Python3几乎需要两倍的时间。(在我运行Ubuntu 16.04虚拟机的笔记本电脑上,Python2=14.9秒,Python3=28.4秒)

你知道为什么会这样吗?或者我们如何恢复速度的想法

下面是我们用来测试速度的代码片段:

import os
import pandas
import timeit

ts_df = pandas.DataFrame([[1.032,3.480653,-1,2.448653],
[3.480653,3.792538,0,0.311886],
[3.792538,12.022123,1,8.229585],
[12.022123,21.91544,0,9.893317],
[21.91544,23.850186,-1,1.934746],
[23.850186,26.495987,0,2.6458],
[26.495987,30.09994,1,3.603953],
[30.09994,31.679636,0,1.579696],
[31.679636,33.491384,-1,1.811748],
[33.491384,35.549925,0,2.058541],
[35.549925,37.267455,-1,1.71753],
[37.267455,37.665347,0,0.397893],
[37.665347,40.038281,1,2.372933],
[40.038281,40.292786,0,0.254505],
[40.292786,43.168465,-1,2.875679],
[43.168465,46.916554,0,3.74809],
[46.916554,48.510315,1,1.593761],
[48.510315,61.023221,0,12.512907],
[61.023221,61.426129,-1,0.402908],
[61.426129,63.271943,0,1.845813],
[63.271943,66.097349,1,2.825406],
[66.097349,68.298797,0,2.201448],
[68.298797,70.465333,1,2.166536],
[70.465333,77.336305,0,6.870972],
[77.336305,85.306432,1,7.970127],
[85.306432,87.363149,0,2.056717],
[87.363149,90.143931,-1,2.780782],
[90.143931,90.538878,0,0.394947],
[90.538878,94.289258,1,3.75038],
[94.289258,96.178212,0,1.888954]], columns=['startTimeIndex','stopTimeIndex','value','duration'])

def indexMe1(ts, start, stop):
    ts = ts['startTimeIndex']
    ix = ts[(ts >= start) & (ts <= stop)].index.tolist()
    return ix

if __name__ == "__main__":
    print('indexMe1:')
    print(indexMe1(ts_df, 5, 22))
    print(timeit.timeit("indexMe1(ts_df, 5, 22)",
                        setup="from __main__ import indexMe1, ts_df",
                        number=10000))


Tags: 代码importpandasdfindexstart速度python3
1条回答
网友
1楼 · 发布于 2024-06-16 12:13:02

感谢简在这方面的努力

回答自己的问题只是为了记录我的发现

关于为什么会发生这种情况。。。 发现我们的python和pandas版本的结合产生了一个缓慢的增长

在如何恢复速度方面。。。 当我转到python3.8.5和pandas1.1.0时,我们在python3中看到的减速消失了

相关问题 更多 >