ホームページ >バックエンド開発 >Python チュートリアル >Pandas DataFrame でデカルト積 (CROSS JOIN) を実行する最速の方法は何ですか?
Pandas を使用したパフォーマンス デカルト積 (CROSS JOIN)
概要
デカルト積の計算CROSS JOIN とも呼ばれ、2 つ以上の DataFrame を結合できます。データ分析において重要な操作となります。ただし、この結果を計算するための最もパフォーマンスの高い方法を見つけるのは困難な場合があります。この記事では、さまざまな手法を検討し、最適なソリューションを決定するためのパフォーマンスの比較を提供します。
方法
1.一時的な「キー」列を使用した多対多の JOIN:
最も簡単なアプローチは、同じ値 (例: 1) を持つ一時的な「キー」列を両方の DataFrame に割り当て、マージを使用した「キー」列での多対多の JOIN。ただし、この方法では、大きな DataFrame の場合はパフォーマンスに制限がある可能性があります。
2. NumPy デカルト積:
NumPy は 1D デカルト積の効率的な実装を提供します。これらの実装のいくつかは、DataFrame 用のパフォーマンスの高いデカルト積ソリューションを構築するために利用できます。注目すべき例の 1 つは @senderle の実装です。
3.非混合インデックスのデカルト積:
このメソッドは、任意のタイプのスカラー dtype を持つ DataFrame で動作するように一般化されています。これには、DataFrame の数値インデックスのデカルト積を計算し、これを使用して DataFrame のインデックスを再作成することが含まれます。
4. 2 つの DataFrame のさらなる簡略化:
2 つの DataFrame のみを扱う場合、np.broadcast_arrays を使用して、NumPy デカルト積ソリューションと同様のパフォーマンスを達成できます。
パフォーマンス評価
合成データフレームのベンチマーク固有のインデックスは、@senderle の cartesian_product 関数を使用すると全体的なパフォーマンスが最高になることを示しています。ただし、簡略化された cartesian_product_simplified 関数は、2 つの DataFrame のみを操作する場合、ほぼ同じレベルのパフォーマンスを提供します。
結論
DataFrame のデカルト積を計算するための最適な方法は、依存します。データのサイズとタイプ、インデックスの dtype が混合されているか、一意であるかなど、さまざまな要因に基づいて決定されます。パフォーマンス ベンチマークに基づいて、特に大規模な DataFrame または複数の DataFrame を操作する場合に最高のパフォーマンスを得るには、@senderle の cartesian_product 関数を使用することをお勧めします。非混合スカラー dtype を持つ 2 つの DataFrame のみが関与する場合、簡略化された cartesian_product_simplified 関数は優れたパフォーマンスを提供します。
以上がPandas DataFrame でデカルト積 (CROSS JOIN) を実行する最速の方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。