ホームページ  >  記事  >  バックエンド開発  >  Python で大きな CSV ファイルを効果的に読み取って処理するにはどうすればよいですか?

Python で大きな CSV ファイルを効果的に読み取って処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-09 11:58:02535ブラウズ

How to Effectively Read and Process Large CSV Files in Python?

大きな CSV ファイルを効果的に読み取る

Python で大きな CSV ファイルを読み取り、処理することは、メモリ制限により困難な場合があります。この問題は、数百万の行と数百の列を含むファイルではさらに顕著になります。

メモリの問題と最適化

現在のコードは、 CSVファイルをリストに取り込みます。ただし、このアプローチはデータセット全体をメモリに読み込むため、大きなファイルの場合は非効率的です。

このメモリの問題を解決するには、データを読み込むときにデータを処理します。以下に示すように、一度に 1 行を生成するジェネレーター関数を使用します。

import csv

def getstuff(filename, criterion):
    with open(filename, "rb") as csvfile:
        datareader = csv.reader(csvfile)
        yield next(datareader)  # yield the header row
        count = 0
        for row in datareader:
            if row[3] == criterion:
                yield row
                count += 1
            elif count:
                # stop when exceeding the adjacent rows of criteria
                return

この更新されたコードは、指定された基準に一致する行を 1 行ずつ生成します。データセット全体をメモリ内に保持する必要がなくなります。

パフォーマンスの向上

メモリの最適化以外にも、パフォーマンスを向上させる追加の手法があります。

  • ストリーミング パーサーを使用する: ストリーミングをサポートする CSV ライブラリの使用を検討してください。これにより、データをメモリにロードせずに段階的に処理できるようになります。
  • 並列処理:システムがサポートしている場合は、ワークロードを複数のコアまたはプロセッサーに分散して並列処理を検討します。
  • 頻繁にアクセスされるデータをキャッシュする: 可能であれば、繰り返しアクセスされるデータセットの部分をキャッシュします。再読み込みの必要性を最小限に抑えます。
  • コードを最適化します: 処理を遅くする可能性がある不要な操作や非効率な操作がないかコードを確認します。

方法これらの戦略を採用すると、大きな CSV ファイルを処理するための Python コードの効率を大幅に向上させることができます。

以上がPython で大きな CSV ファイルを効果的に読み取って処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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