ホームページ > データベース > mysql チュートリアル > 大規模な SQL クエリ結果を Pandas DataFrame にロードする際のメモリ エラーを回避するにはどうすればよいですか?

大規模な SQL クエリ結果を Pandas DataFrame にロードする際のメモリ エラーを回避するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-13 08:56:44
オリジナル
291 人が閲覧しました

How Can I Avoid Memory Errors When Loading Large SQL Query Results into Pandas DataFrames?

大量の 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 は非常に効果的ですが、大規模なデータセットの場合は次の追加の最適化を検討してください。

  • インデックス付きビュー: SQL データベースでインデックス付きビューを採用すると、クエリの実行を大幅に高速化できます。
  • 最適化された SQL 構文: 大規模なデータ取得用に設計されたデータベース固有の構文を利用します。
  • 代替フレームワーク: 非常に大規模なデータセットの場合は、Dask や Spark などの分散コンピューティング フレームワークを検討してください。

ただし、多くのシナリオでは、chunksize パラメーターを利用すると、pandas で大量の SQL クエリ結果を操作する際のメモリ管理に対するシンプルかつ堅牢なソリューションが提供されます。

以上が大規模な SQL クエリ結果を Pandas DataFrame にロードする際のメモリ エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート