以下のコードは、少なくとも関数 clip() の特定のケースでは、pandas が numpy よりもはるかに遅い可能性があることを示唆しています。驚くべきことは、numpy で計算を実行しながら、pandas から numpy へ、および pandas に戻る往復を行うことは、pandas で行うよりもはるかに高速であることです。
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