Pandas でデカルト積 (CROSS JOIN) を効率的に実行するにはどうすればよいですか?
Pandas の効率的なデカルト積 (CROSS JOIN)
概要:
デカルト積、 CROSS JOIN とも呼ばれる、データ分析の基本的な操作です。パンダでは、ある DataFrame のすべての行と別の DataFrame のすべての行を結合する必要があります。理解するのは簡単ですが、デカルト積を直接計算することは、特に大規模なデータセットの場合、計算コストが高くなる可能性があります。
ベスト プラクティス:
1. 「キー」列メソッド:
このアプローチは、小規模から中規模のデータセットに適しています:
def cartesian_product_key(left, right): return left.assign(key=1).merge(right.assign(key=1), on='key').drop('key', 1)
2. NumPy ベースのソリューション:
大規模なデータセットの場合、NumPy ベースのソリューションの方が優れたパフォーマンスを提供します:
import numpy as np def cartesian_product(arrays): la = len(arrays) dtype = np.result_type(*arrays) arr = np.empty([len(a) for a in arrays] + [la], dtype=dtype) for i, a in enumerate(np.ix_(*arrays)): arr[...,i] = a return arr.reshape(-1, la)
3.一意および非一意のインデックスに対する一般化された CROSS JOIN:
このメソッドは、あらゆる種類のインデックスを持つ DataFrame を処理できます:
def cartesian_product_generalized(left, right): la, lb = len(left), len(right) idx = cartesian_product(np.ogrid[:la], np.ogrid[:lb]) return pd.DataFrame( np.column_stack([left.values[idx[:,0]], right.values[idx[:,1]]]))
4。 Multi-DataFrame CROSS JOIN:
これは、複数の DataFrame を処理するために以前のアプローチを拡張します:
def cartesian_product_multi(*dfs): idx = cartesian_product(*[np.ogrid[:len(df)] for df in dfs]) return pd.DataFrame( np.column_stack([df.values[idx[:,i]] for i,df in enumerate(dfs)]))
5。 2 つの DataFrame の単純化された CROSS JOIN:
このメソッドは、@senderle の cartesian_product とほぼ同じ速度で、2 つの DataFrame:
def cartesian_product_simplified(left, right): la, lb = len(left), len(right) ia2, ib2 = np.broadcast_arrays(*np.ogrid[:la,:lb]) return pd.DataFrame( np.column_stack([left.values[ia2.ravel()], right.values[ib2.ravel()]]))
パフォーマンスの比較に特に効果的です。 :
これらのベンチマークさまざまなデータセット サイズのメソッドを比較すると、NumPy ベースのソリューションが、大規模なデータセットに対して他のソリューションよりも一貫して優れていることがわかります。
結論:
デカルト積を計算するための適切なメソッドの選択pandas はデータセットのサイズと特性によって異なります。パフォーマンスを優先する場合は、NumPy ベースのソリューションのいずれかを選択してください。利便性と柔軟性を高めるために、「キー」列メソッドまたは一般化された CROSS JOIN を検討してください。
以上がPandas でデカルト積 (CROSS JOIN) を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法
