大量の SQL クエリ結果を Pandas DataFrame に効率的にロードする
大規模なデータセットの処理には、多くの場合、SQL データベースからデータを取得し、それを pandas DataFrame にロードすることが含まれます。 ただし、何百万ものレコードを直接ロードすると、メモリ エラーが発生しやすくなります。
一般的なエラーは、データセット全体を同時にメモリにロードしようとしたときに発生します。 Pandas は、chunksize
関数内の read_sql_query
パラメーターという解決策を提供します。
増分データ読み込みに chunksize
を利用する:
chunksize
パラメーターを使用すると、SQL クエリの結果をより小さく管理しやすいバッチで読み取ることができるため、メモリの負担が大幅に軽減されます。
<code class="language-python">import pandas as pd pd.read_sql_query(sql, engine, chunksize=100000)</code>
chunksize
を指定することで、各反復で読み取られる行数を制御します。
実際的な例:
<code class="language-python">sql = "SELECT * FROM MyTable" for chunk in pd.read_sql_query(sql, engine, chunksize=5): # Process each chunk individually print(chunk)</code>
このコードはクエリ結果を反復処理し、各 chunk
を個別に処理します。 これにより、データをより小さく消化しやすい部分に分けて処理することで、メモリの過負荷を防ぎます。
さらなる最適化戦略:
chunksize
は非常に効果的ですが、大規模なデータセットの場合は次の追加の最適化を検討してください。
ただし、多くのシナリオでは、chunksize
パラメーターを利用すると、pandas で大量の SQL クエリ結果を操作する際のメモリ管理に対するシンプルかつ堅牢なソリューションが提供されます。
以上が大規模な SQL クエリ結果を Pandas DataFrame にロードする際のメモリ エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。