Pythonとpandasで大量のCSVデータを効率的に処理する方法

この記事では、Pythonのライブラリであるpandasを使用して、大量のCSVファイルのデータを効率的に扱うための「チャンクサイズ指定」というテクニックについて詳しく解説します。具体的なコード例とその解説、応用例を含めています。

目次

なぜチャンクサイズ指定が必要なのか

CSVファイルはデータ分析でよく使用されるが、ファイルサイズが大きい場合、メモリが不足して処理ができないという問題が生じる可能性があります。そこで、ファイルを小さな「チャンク」に分けて読み込むことで、メモリ効率を向上させる手法が「チャンクサイズ指定」です。

基本的な使い方

まずは、チャンクサイズを指定する基本的な使い方から見ていきましょう。

import pandas as pd

# チャンクサイズを指定してCSVファイルを読み込む
chunk_size = 50000  # ここで任意のサイズを指定
chunks = []
for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):
    # ここでチャンクごとに処理を行う
    chunks.append(chunk)

# 最終的なDataFrameを作成
df = pd.concat(chunks, axis=0)

コードの解説

このコードは、大きなCSVファイルを`chunk_size`で指定した行数ごとに読み込みます。その後、各チャンクを処理して最後に結合します。

応用例

応用例1: 特定の条件でデータをフィルタリング

特定の条件に合致するデータのみを抽出して処理する場合もあります。

chunks = []
for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):
    filtered_chunk = chunk[chunk['column_name'] == 'value']
    chunks.append(filtered_chunk)
df = pd.concat(chunks, axis=0)

応用例2: 集計処理を行う

チャンクごとに集計処理を行い、その結果を合算することもできます。

result = 0
for chunk in pd.read_csv('large_file.csv', chunksize=chunk_size):
    result += chunk['column_name'].sum()

応用例3: 複数のCSVファイルを効率的に処理する

複数のCSVファイルがある場合、それぞれをチャンクで読み込んで効率的に処理することも可能です。

import os

chunks = []
for file_name in os.listdir('csv_folder/'):
    for chunk in pd.read_csv(f'csv_folder/{file_name}', chunksize=chunk_size):
        chunks.append(chunk)
df = pd.concat(chunks, axis=0)

まとめ

pandasで大量のCSVファイルのデータを効率的に処理するためには、チャンクサイズを指定する方法が有用です。この記事で紹介したテクニックを使って、データ処理のパフォーマンスを向上させましょう。

コメント

コメントする

目次