熊猫比numpy慢得多?

时间:2013-11-07 10:54:38

标签: python numpy pandas

下面的代码表明,pandas可能比numpy慢得多,至少在函数clip()的特定情况下如此。令人惊讶的是,从熊猫到numpy和回到熊猫的往返,同时在numpy中进行计算,仍然比在熊猫中做得快得多。

pandas功能不应该以这种迂回的方式实现吗?

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

1 个答案:

答案 0 :(得分:11)

在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