この記事では、Pythonを使用して大容量のCSVファイルを分割して読み込む方法について詳しく解説します。具体的なコード例とその解説、応用例を含めています。
目次
はじめに
大容量のCSVファイルは、一度に読み込むとメモリが不足してしまう可能性があります。この記事では、そのような問題を解決するためのPythonコードを紹介します。
必要なライブラリ
この記事で使用する主なライブラリは以下のとおりです。
- Pandas
基本的な方法
PythonのPandasライブラリを使用してCSVファイルを分割読み込みします。
コード例
import pandas as pd
# CSVファイルのパス
csv_file_path = 'large_file.csv'
# 分割するサイズ
chunk_size = 50000 # ここでは5万行ごとに分割
# 分割読み込み
chunked_df = pd.read_csv(csv_file_path, chunksize=chunk_size)
# 各チャンクを処理
for i, chunk in enumerate(chunked_df):
print(f'Processing chunk {i}')
# ここで各チャンクに対する処理を書く
コードの解説
このコードでは、`pd.read_csv()`関数に`chunksize`パラメータを設定することで、CSVファイルを分割して読み込んでいます。各チャンクは`chunk`として取得され、任意の処理を施すことができます。
応用例
例1: 各チャンクにフィルタリングを適用
for i, chunk in enumerate(chunked_df):
filtered_chunk = chunk[chunk['column_name'] > 100]
print(f'Filtered chunk {i}')
# 処理
例2: 各チャンクを異なるCSVファイルとして保存
for i, chunk in enumerate(chunked_df):
chunk.to_csv(f'chunk_{i}.csv', index=False)
print(f'Saved chunk {i}')
例3: 各チャンクに特定の処理を並列で適用
from concurrent.futures import ThreadPoolExecutor
def process_chunk(chunk):
# 何らかの処理
pass
with ThreadPoolExecutor() as executor:
executor.map(process_chunk, chunked_df)
まとめ
PythonのPandasライブラリを用いて大容量のCSVファイルを効率よく分割して読み込む方法を解説しました。このテクニックを用いることで、メモリ不足になることなく安全かつ効率的に大量のデータを処理することが可能です。
コメント