この記事では、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ファイルに対する操作が簡単になりますので、データ解析や自動化において非常に便利です。
コメント