一般情況下,我們肯定不能用for 迴圈的方式來處理資料
再不然用df.itertuples 或 df.iterrows,來實現迴圈遍歷,
利用pandas操作的最好的方式還是向量化操作,這樣才能最大化的發揮pandas的優勢
處理最好的採用向量化的操作方式之外,在pandas的官方文件中,也介紹了如何利用numba來加速pandas處理的資料,我們知道numba是對numpy 函式 以及迴圈有很好的加速效果,但是對pandas預設是不支援的,pandas的官方文件給出了乙個例項方法
邏輯就是把pandas中的series轉化為numpy的ndarray,然後利用函式作用於ndarray,在函式上**jit裝飾器,從而將**直接轉化為機器碼,實現加速效果
參考連線
參考**
import numba
@numba.jit
def f_plain(x):
return x * (x - 1)
@numba.jit
def integrate_f_numba(a, b, n):
s = 0
dx = (b - a) / n
for i in range(n):
s += f_plain(a + i * dx)
return s * dx
@numba.jit
n = len(col_n)
result = np.empty(n, dtype='float64')
assert len(col_a) == len(col_b) == n
for i in range(n):
result[i] = integrate_f_numba(col_a[i], col_b[i], col_n[i])
return result
def compute_numba(df):
df['b'].to_numpy(),
df['n'].to_numpy())
return pd.series(result, index=df.index, name='result')
pandas的eval函式對大型的陣列有很好的加速作用
參考官方文件
Pandas常見的效能優化方法
pandas是資料科學和資料競賽中常見的庫,我們使用pandas可以進行快速讀取資料 分析資料 構造特徵。但pandas在使用上有一些技巧和需要注意的地方,如果你沒有合適的使用,那麼pandas可能執行速度非常慢。本文將整理一些pandas使用技巧,主要是用來節約記憶體和提高 速度。在pandas中...
優化方法總結
梯度下降,sgd adam,牛頓法,擬牛頓法 首先要理解,優化方法對誰優化?沒有說錯,我們是做機器學習或者深度學習,在程式中是通過不斷迭代完成的,那麼,學習什麼呢?是x?不對,因為x其實是我們的資料,我們是想通過x求得y也就是根據我們的已有的資料求出對應對映下的結果,可能是個分類,也可能是個回歸,其...
最優化方法總結
1.座標下降法 coordinate descent method 對於乙個最優化問題 min x f x 1,x 2,x n 其求解過程如下 loop until convergence for i 1 n x i arg min x i f x 1,x 2,x i 1,x i,x i 1,x n...