NumPy 和 pandas 哪個更快?
NumPy 和 pandas 都是資料科學和機器學習技術中必不可少的工具。我們知道 pandas 提供了類似 SQL 表的 DataFrame,允許您進行表格資料分析,而 NumPy 則非常高效地執行向量和矩陣運算。
pandas 提供了許多使用 C 或 Cython 最佳化的函式,這些函式可能比 NumPy 的等效函式(例如從文字檔案讀取文字)更快。
如果您想執行數學運算,例如點積、計算平均值等等,pandas DataFrame 通常會比 NumPy 陣列慢。因為 pandas 正在執行更多操作,例如對齊標籤、處理異構資料等等。
示例
import numpy as np import pandas as pd array = np.arange(100, 200) s = pd.Series(array) print('Series object time: ',end ='') %timeit -n10 -r2 s.mean() print('Numpy array time: ',end ='') %timeit -n10 -r2 np.mean(array)
解釋
這裡我們建立了一個包含 100 個值的 NumPy 陣列,範圍從 100 到 200,還使用 NumPy 陣列建立了一個 pandas Series 物件。
我們使用內建的 IPython 魔術函式 %timeit 來查詢每個函式消耗的平均時間。計算每個物件資料的平均值。
-n10 用於設定迴圈計數,-r2 用於設定執行計數。
輸出
Series object: 225 µs ± 83 µs per loop (mean ± std. dev. of 2 runs, 10 loops each) Numpy array: 33.1 µs ± 10.8 µs per loop (mean ± std. dev. of 2 runs, 10 loops each)
我們可以看到 NumPy 陣列和 Series 物件計算平均值所花費的時間。
示例
import numpy as np import pandas as pd array = np.arange(100, 200) s = pd.Series(array) print('Series object time: ',end ='') %timeit -n10 -r2 s.std() print('Numpy array time: ',end ='') %timeit -n10 -r2 np.std(array)
解釋
在這裡,我們驗證了 NumPy 陣列和 pandas Series 物件計算標準差所花費的時間。我們可以在下面的輸出塊中看到時間戳。
輸出
Series object time: 443 µs ± 26.6 µs per loop (mean ± std. dev. of 2 runs, 10 loops each) Numpy array time: 104 µs ± 12.1 µs per loop (mean ± std. dev. of 2 runs, 10 loops each)
正如我們在上面兩個示例中看到的,與 NumPy 物件相比,pandas 消耗的平均時間更多。
建立 pandas DataFrame 所花費的時間大約是建立 NumPy 陣列的 6000 倍。Pandas 需要額外的時間來設定索引標籤。
廣告