概要:
結合条件と日付制約に基づいてデータフレームを結合すると、データ分析における一般的なタスク。 pandas にはさまざまなマージ オプションが用意されていますが、マージ プロセス中にフィルタリングしてパフォーマンスを最適化すると、大きな中間データフレームの処理を回避できる利点があります。この記事では、SQL を使用してこの効率を実現する別のアプローチについて説明します。
フィルタリングによるマージ:
提供されたコード スニペットは、pd を使用して 2 つのデータフレーム A と B をマージする方法を示しています。 merge() 関数を使用し、その後、日付条件に基づいて結果をフィルタリングします。ただし、フィルタリング前に中間データフレームが作成されるため、大規模なデータフレームを操作する場合、このアプローチは最適とは言えません。
代替としての SQL:
SQL はより効率的な方法を提供します。クエリ自体内でフィルタリングを使用してこのマージを実行します。インメモリ データベースに接続することで、結合と日付フィルタリングを 1 ステップで実行するクエリを作成できます。
コード例:
次のコードは、次のコードを示します。 SQL アプローチ:
<code class="python">import pandas as pd import sqlite3 # Connect to in-memory database conn = sqlite3.connect(':memory:') # Write dataframes to tables terms.to_sql('terms', conn, index=False) presidents.to_sql('presidents', conn, index=False) war_declarations.to_sql('wars', conn, index=False) # SQL query qry = ''' select start_date PresTermStart, end_date PresTermEnd, wars.date WarStart, presidents.name Pres from terms join wars on date between start_date and end_date join presidents on terms.president_id = presidents.president_id ''' # Read SQL query results into dataframe df = pd.read_sql_query(qry, conn)</code>
結果:
結果のデータフレーム df には、A の日付が B の日付条件と一致する行が含まれます。この特定の例では、
利点:
このアプローチには次の利点があります:
以上がSQL を使用して日付制約を使用してデータフレームのマージを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。