Pandas를 사용한 고성능 데카르트 곱(CROSS JOIN)
소개
데카르트 곱 계산 , CROSS JOIN이라고도 함, 두 개 이상의 DataFrame은 데이터 분석에서 중요한 작업이 될 수 있습니다. 그러나 이 결과를 계산하는 가장 효과적인 방법을 찾는 것은 어려울 수 있습니다. 이 기사에서는 최적의 솔루션을 결정하기 위해 다양한 기술을 탐색하고 성능 비교를 제공합니다.
방법
1. 임시 "키" 열을 사용한 다대다 JOIN:
가장 간단한 접근 방식은 임시 "키" 열을 동일한 값(예: 1)을 가진 두 DataFrame에 할당하고 다음을 수행하는 것입니다. 병합을 사용하여 "키" 열에 다대다 JOIN을 수행합니다. 그러나 이 방법은 대용량 DataFrame의 경우 성능 제한이 있을 수 있습니다.
2. NumPy 데카르트 곱:
NumPy는 1D 데카르트 곱의 효율적인 구현을 제공합니다. 이러한 구현 중 일부는 DataFrames에 대한 고성능 데카르트 제품 솔루션을 구축하는 데 활용될 수 있습니다. 주목할만한 예 중 하나는 @senderle의 구현입니다.
3. 혼합되지 않은 인덱스의 데카르트 곱:
이 방법은 모든 유형의 스칼라 dtype을 사용하는 DataFrame에서 작동하도록 일반화됩니다. 여기에는 DataFrame의 숫자 인덱스의 데카르트 곱을 계산하고 이를 사용하여 DataFrame을 다시 색인화하는 작업이 포함됩니다.
4. 두 개의 DataFrame에 대한 추가 단순화:
두 개의 DataFrame만 처리하는 경우 np.broadcast_arrays를 사용하여 NumPy Cartesian 제품 솔루션과 유사한 성능을 얻을 수 있습니다.
성능 평가
고유한 합성 DataFrame에 대한 벤치마크 지수는 @senderle의 cartesian_product 함수를 사용하면 전반적으로 최상의 성능을 얻을 수 있음을 보여줍니다. 그러나 단순화된 cartesian_product_simplified 함수는 두 개의 DataFrame만으로 작업할 때 거의 동일한 수준의 성능을 제공합니다.
결론
DataFrame의 데카르트 곱을 계산하는 최적의 방법은 데이터의 크기와 유형, 인덱스에 dtype이 혼합되어 있는지 또는 고유한지 여부를 포함한 다양한 요인에 따라 결정됩니다. 성능 벤치마크에 따르면, 특히 대규모 DataFrames 또는 여러 DataFrames로 작업할 때 최상의 성능을 위해 @senderle의 cartesian_product 함수를 사용하는 것이 좋습니다. 혼합되지 않은 스칼라 dtype이 있는 두 개의 DataFrame만 관련된 경우 단순화된 cartesian_product_simplified 함수는 뛰어난 성능을 제공합니다.
위 내용은 Pandas DataFrames로 데카르트 곱(CROSS JOIN)을 수행하는 가장 빠른 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!