[Python] Pandas數值計算提速方法

寫高性能的Pandas代碼
http://www.xiejingyang.com/2018/04/24/high-performance-pandas-code

python作為科學計算的最常使用語言之一,應對大量的資料計算,如果太慢了,會讓需要不斷試錯的科學計算方法消耗過多的時間。

樸素的for迴圈攜帶的資訊太多並且大多都是不需要使用的,而且使用的是python緩慢的迴圈。那麼可以針對這兩點來進行優化,首先優化掉python迴圈,使用apply函數,使用C代碼來迴圈,這樣性能就能提高一倍了;然後減少攜帶資訊,只使用不可變的tuple,能夠提高相當多的性能。

但其實tuple並不是DataFrame的原有結構,轉換成tuple還是需要花費很多時間,能直接使用DataFrame的結構採向量式來計算,性能又提高了20倍。Pandas是使用的Numpy做的基本資料單位,所以能從向量中提取出原來的Numpy陣列再進行計算,就能提高一部分性能。

系統設計的難點在於用最好或者更好的方式實現這個功能,系統的性能不是系統的瓶頸。Python易於試錯,能快速反覆運算,也有很多性能優化的手段,如果這些手段並不能滿足需求,還能使用Cython或者直接使用C來編寫部分代碼。


#Python, Pandas, DataFrame, Numpy, Cython, C, performance, 性能

留言