ホームページ >データベース >mysql チュートリアル >メモリを使い果たさずに大規模な SQL クエリを Pandas DataFrame に読み取るにはどうすればよいですか?

メモリを使い果たさずに大規模な SQL クエリを Pandas DataFrame に読み取るにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-13 09:14:44890ブラウズ

How Can I Read Large SQL Queries into Pandas DataFrames Without Running Out of Memory?

大規模な SQL クエリを Pandas DataFrame にインポートする際のメモリ エラーの回避

大規模な SQL データベースを操作すると、大規模なデータセットを取得するときに問題が発生することがよくあります。 100 万行を超えるテーブル全体を Pandas DataFrame に直接ロードしようとすると、メモリ エラーが発生しやすくなります。 次のコードはこの問題を示しています:

<code class="language-python">import pandas.io.sql as psql
sql = "SELECT TOP 2000000 * FROM MyTable" 
data = psql.read_frame(sql, cnxn)</code>

このメソッドは失敗する傾向があり、結果として得られる DataFrame が利用可能な RAM を超えると「MemoryError」が発生します。

Pandas は、バージョン 0.15 以降、chunksize パラメーターという堅牢なソリューションを提供しています。これにより、SQL クエリをより小さく管理しやすい部分に分けて読み取り、処理できるようになります。

このソリューションを実装する方法は次のとおりです:

<code class="language-python">sql = "SELECT * FROM My_Table"
for chunk in pd.read_sql_query(sql , engine, chunksize=5):
    print(chunk)</code>

chunksize を指定すると、Pandas はデータを増分的に取得します。 各チャンクは個別に処理されるため、メモリの過負荷が防止されます。上の例では、各チャンクを出力します。 必要に応じて、これを調整して各チャンクに対して他の操作を実行できます。

この手法は、大規模な SQL クエリを処理する実用的でメモリ効率の高い方法を提供し、大量のデータセットでもスムーズなデータ処理を保証します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。