ホームページ >データベース >mysql チュートリアル >メモリを使い果たさずに大規模な SQL クエリを Pandas DataFrame に読み取るにはどうすればよいですか?
大規模な 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 サイトの他の関連記事を参照してください。