與Pandas 的高性能笛卡爾積(CROSS JOIN)
簡介
計算笛卡爾積,也稱為CROSS JOIN,兩個或多個資料幀可能是資料分析中的關鍵操作。然而,找到計算此結果的最高效方法可能具有挑戰性。本文將探討各種技術並提供效能比較以確定最佳解決方案。
方法
1.使用臨時「鍵」列進行多對多連接:
最直接的方法是將臨時「鍵」列指派給具有相同值(例如1)的兩個DataFrame,並執行使用合併在「鍵」列上進行多對多JOIN。但是,此方法對於大型 DataFrame 可能存在效能限制。
2. NumPy 笛卡爾積:
NumPy 提供一維笛卡爾積的高效實現。其中一些實作可用於為 DataFrame 建立高效能的笛卡爾積解決方案。一個值得注意的例子是 @senderle 的實作。
3。非混合索引上的笛卡爾積:
此方法概括為適用於具有任何類型標量 dtype 的 DataFrame。它涉及計算 DataFrame 數字索引的笛卡爾積,並使用它來重新索引 DataFrame。
4。兩個 DataFrame 的進一步簡化:
僅處理兩個 DataFrame 時,可以使用 np.broadcast_arrays 來實現與 NumPy 笛卡爾積解決方案類似的效能。
效能評估
具有唯一索引的合成 DataFrame 的基準表示使用 @senderle 的 cartesian_product 函數可以獲得最佳的整體效能。然而,簡化的 cartesian_product_simplified 函數在僅使用兩個 DataFrame 時提供了幾乎相同程度的效能。
結論
計算DataFrame 的笛卡爾積的最佳方法取決於取決於各種因素,包括資料的大小和類型以及索引是否具有混合資料類型還是唯一的。根據效能基準,建議使用 @senderle 的 cartesian_product 函數以獲得最佳效能,特別是對於大型 DataFrame 或使用多個 DataFrame 時。對於僅涉及兩個具有非混合標量資料類型的 DataFrame 的情況,簡化的 cartesian_product_simplified 函數提供了出色的效能。
以上是使用 Pandas DataFrames 執行笛卡爾積(CROSS JOIN)的最快方法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!