Pythonでcsv.DictReaderを使ってヘッダー付きCSVファイルを読み込む方法

この記事では、Pythonの`csv.DictReader`クラスを使用してヘッダー付きCSVファイルを読み込む方法について解説します。具体的なコード例、その詳細な解説、さらには応用例も含めてご紹介します。

目次

csv.DictReaderの基本

Pythonの標準ライブラリ`csv`モジュールには、CSVファイルを辞書形式で読み込むことができる`DictReader`クラスがあります。これにより、ヘッダー(列名)をキーとしてデータにアクセスすることが可能になります。

基本的な使い方

import csv

# CSVファイルを開く
with open('sample.csv', mode ='r')as file:
   
    # csv.DictReaderを使用してCSVデータを読み込む
    csvFile = csv.DictReader(file)

    # 行ごとに処理
    for lines in csvFile:
        print(lines['名前'], lines['年齢'])  # ヘッダー(列名)を指定してデータにアクセス

このコードでは、`sample.csv`というヘッダー付きのCSVファイルを`csv.DictReader`を使って読み込んでいます。`for`ループで行を一つずつ取得し、ヘッダーをキーとして特定のデータ(この例では”名前”と”年齢”)にアクセスしています。

応用例

応用例1: フィルタリング

CSVファイルから特定の条件に合うデータだけを抽出したい場合も、`DictReader`が役立ちます。

with open('sample.csv', mode ='r')as file:
    csvFile = csv.DictReader(file)
    
    for lines in csvFile:
        if int(lines['年齢']) > 20:
            print(lines)

この例では、年齢が20より大きいデータだけを抽出しています。

応用例2: データの変換

読み込んだデータを加工して新しいCSVファイルに書き出すこともできます。

with open('sample.csv', mode ='r')as infile, open('new_sample.csv', mode ='w') as outfile:
    csvFile = csv.DictReader(infile)
    fieldnames = ['名前', '新しい年齢']
    
    writer = csv.DictWriter(outfile, fieldnames=fieldnames)
    writer.writeheader()
    
    for lines in csvFile:
        writer.writerow({'名前': lines['名前'], '新しい年齢': int(lines['年齢']) + 1})

応用例3: 複数ファイルの処理

複数のCSVファイルをまとめて一つのCSVファイルに結合することも可能です。

import os

# 出力用CSVファイルを開く
with open('merged.csv', mode ='w') as outfile:
    writer = csv.DictWriter(outfile, fieldnames=['名前', '年齢'])
    writer.writeheader()
    
    # 読み込むCSVファイルのリスト
    csv_files = ['sample1.csv', 'sample2.csv']
    
    for csv_file in csv_files:
        with open(csv_file, mode ='r') as infile:
            csvFile = csv.DictReader(infile)
            for lines in csvFile:
                writer.writerow(lines)

まとめ

PythonでCSVファイルを扱う際には、`csv.DictReader`を使うことで非常に効率的なデータの読み書きが可能です。特にヘッダー付きのCSVファイルに対する操作が簡単になりますので、データ解析や自動化において非常に便利です。

コメント

コメントする

目次