Python 大熊猫比小熊慢很多?
下面的代码表明pandas可能比numpy慢得多,至少在函数clip()的特定情况下是如此。令人惊讶的是,在用numpy进行计算的同时,从熊猫到numpy再回到熊猫的往返行程仍然比用熊猫进行计算快得多 熊猫功能不应该以这种迂回的方式实现吗Python 大熊猫比小熊慢很多?,python,numpy,pandas,Python,Numpy,Pandas,下面的代码表明pandas可能比numpy慢得多,至少在函数clip()的特定情况下是如此。令人惊讶的是,在用numpy进行计算的同时,从熊猫到numpy再回到熊猫的往返行程仍然比用熊猫进行计算快得多 熊猫功能不应该以这种迂回的方式实现吗 In [49]: arr = np.random.randn(1000, 1000) In [50]: df=pd.DataFrame(arr) In [51]: %timeit np.clip(arr, 0, None) 100 loops, best
In [49]: arr = np.random.randn(1000, 1000)
In [50]: df=pd.DataFrame(arr)
In [51]: %timeit np.clip(arr, 0, None)
100 loops, best of 3: 8.18 ms per loop
In [52]: %timeit df.clip_lower(0)
1 loops, best of 3: 344 ms per loop
In [53]: %timeit pd.DataFrame(np.clip(df.values, 0, None))
100 loops, best of 3: 8.4 ms per loop
在master/0.13(很快发布)中,这要快得多(由于处理对齐/dtype/nans,比本机numpy稍微慢一点)
在0.12中,它是每列应用的,因此这是一个相对昂贵的操作
In [4]: arr = np.random.randn(1000, 1000)
In [5]: df=pd.DataFrame(arr)
In [6]: %timeit np.clip(arr, 0, None)
100 loops, best of 3: 6.62 ms per loop
In [7]: %timeit df.clip_lower(0)
100 loops, best of 3: 12.9 ms per loop
没关系,因为pandas在ClippingGi的基础上进行了大量的数据检查、转换和其他工作,所以当@alko枚举时,发现所有的pandas开销时,pandas也措手不及。索引是另一个将大熊猫与裸体区分开来的现实。看看这篇演讲,了解一些关于头顶上熊猫的评论和影响,以及一系列丰富的比较,并非所有的numpy和pandas。然而,引入
.values
的示例进行了直接比较。