Pythonで大容量CSVファイルを効率的に分割して読み込む手法

この記事では、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ファイルを効率よく分割して読み込む方法を解説しました。このテクニックを用いることで、メモリ不足になることなく安全かつ効率的に大量のデータを処理することが可能です。

コメント

コメントする

目次