pandas.read_csv() の使用などの標準的なアプローチは、大規模な CSV ファイルを処理する場合には不十分であることがよくあります。これらのメソッドはシングルスレッドであり、ディスク I/O またはメモリの制限によりすぐにボトルネックになる可能性があります。
究極の Python プログラマー模擬テスト
CSV 操作を並列化することで、複数の CPU コアを利用してデータをより高速かつ効率的に処理できます。このガイドでは、以下を使用したテクニックの概要を説明します:
大きな CSV ファイルを小さなチャンクに分割すると、並列処理が可能になります。サンプル スクリプトは次のとおりです:
import os def split_csv(file_path, lines_per_chunk=1000000): with open(file_path, 'r') as file: header = file.readline() file_count = 0 output_file = None for i, line in enumerate(file): if i % lines_per_chunk == 0: if output_file: output_file.close() file_count += 1 output_file = open(f'chunk_{file_count}.csv', 'w') output_file.write(header) output_file.write(line) if output_file: output_file.close() print(f"Split into {file_count} files.")
Dask は、Python で大規模なデータを処理するための革新的なツールです。大規模なデータセットに対する操作を簡単に並列化できます。
import dask.dataframe as dd # Load the dataset as a Dask DataFrame df = dd.read_csv('large_file.csv') # Perform parallel operations result = df[df['column_name'] > 100].groupby('another_column').mean() # Save the result result.to_csv('output_*.csv', single_file=True)
Dask は、データのチャンクを操作し、利用可能なコア全体でタスクをインテリジェントにスケジュールすることで、メモリの制約を処理します。
究極の Python プログラマー模擬テスト
Polars は、Rust の速度と Python の柔軟性を組み合わせた比較的新しいライブラリです。最新のハードウェア向けに設計されており、パンダよりも大幅に高速に CSV ファイルを処理できます。
import polars as pl # Read CSV using Polars df = pl.read_csv('large_file.csv') # Filter and aggregate data filtered_df = df.filter(pl.col('column_name') > 100).groupby('another_column').mean() # Write to CSV filtered_df.write_csv('output.csv')
Polars は、速度と並列性が重要な状況で優れています。これは、複数のコアを備えたシステムに特に効果的です。
処理ロジックを制御し続けたい場合は、Python のマルチプロセッシング モジュールを使用して CSV 操作を並列化する簡単な方法を提供します。
from multiprocessing import Pool import pandas as pd def process_chunk(file_path): df = pd.read_csv(file_path) # Perform operations filtered_df = df[df['column_name'] > 100] return filtered_df if __name__ == '__main__': chunk_files = [f'chunk_{i}.csv' for i in range(1, 6)] with Pool(processes=4) as pool: results = pool.map(process_chunk, chunk_files) # Combine results combined_df = pd.concat(results) combined_df.to_csv('final_output.csv', index=False)
ディスク I/O と CPU バインドの比較
並列戦略が CPU 処理とディスクの読み取り/書き込み速度のバランスをとるようにしてください。ボトルネックが I/O であるか計算であるかに基づいて最適化します。
メモリオーバーヘッド
Dask や Polars などのツールは、手動マルチプロセッシングに比べてメモリ効率が高くなります。システムのメモリ制約に合わせたツールを選択してください。
エラー処理
並列処理により、デバッグとエラー管理が複雑になる可能性があります。信頼性を確保するために、堅牢なロギングと例外処理を実装します。
究極の Python プログラマー模擬テスト
以上がPython での大規模データ処理の最適化: CSV 操作の並列化ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。