pandas的向量化处理怎么比普通迭代还慢很多

我用了如下三种方法测量pandas列之间相加的效率:1.向量化 2.iterrows迭代 3.先转化成numpy再相加

按道理 向量化处理 肯定要比迭代快啊 为什么实际测下来会慢这么多呢?

df1 = pd.DataFrame({'aaa':{'0':0},
                    'bbb':{'0':8568}
                    ,'ccc':{'0':1}
                    ,'ddd':{'0':0}})
print(df1)
t = timeit.timeit(stmt="df1['aaa']+df1['bbb']+df1['ccc']+df1['ddd']", setup="from  __main__ import df1",number=10000)
print(t)
t = timeit.timeit(stmt="for index,row in df1.iterrows():"
                  "row['aaa']+row['bbb']+row['ccc']+row['ddd']", setup="from  __main__ import df1",number=10000)
print(t)

t = timeit.timeit(stmt="df1['aaa'].values+df1['bbb'].values+df1['ccc'].values+df1['ddd'].values", setup="from  __main__ import df1",number=10000)
print(t)

 

运行结果

   aaa   bbb  ccc  ddd
0    0  8568    1    0
2.639297500019893
0.6697011000069324
0.0938532000000123

第一种表示Series相加,不是向量化处理,Series相加,会根据索引进行操作,索引相同则数值相加,肯定会比数值相加慢。

向量其实就是一维数组,Numpy数组操作是最快的。

向量一般是确保安全性的,不最求速度的。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y