Python

PythonでCSVファイルを操作する方法

CSVファイルはアプリケーション間でのデータ連携によく利用されています。

今回は「CSV」モジュールを使用して、CSVファイルの読込み・書込みの方法を解説したいと思います。

CSVファイル読込み方法

『csv.reader』での読込み

『csv.reader()』の引数にopen関数で取得したファイルオブジェクトをセットします。
そして、for分で回しながら1レコードずつ出力しています。

# モジュールのインポート
import csv

# CSVファイルを読込みモードで開く
with open('sample.csv', 'r', encoding='UTF-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# 出力結果
['名前', '国語', '算数']
['佐藤', '80', '90']
['田中', '60', '70']


for分で取り出したrow変数はlist型なのでインデックスを指定して取り出すことができます。

# モジュールのインポート
import csv

# CSVファイルを読込みモードで開く
with open('sample.csv', 'r', encoding='UTF-8') as f:
    reader = csv.reader(f)
    cnt = 1
    for row in reader:        
        print(str(cnt) + 'レコード目:' + row[0])
        cnt = cnt + 1
# 実行結果
1レコード目:名前
2レコード目:佐藤
3レコード目:田中

『csv.DictReader』での読込み

『csv.DictReader()』の引数にopen関数で取得したファイルオブジェクトをセットします。そして、for分で回しながら1レコードずつ出力しています。

# モジュールのインポート
import csv

# CSVファイルを読込みモードで開く
with open('sample.csv', 'r', encoding='UTF-8') as f:
    reader = csv.DictReader(f)    
    for row in reader:
        print(row)
# 実行結果
{'名前': '佐藤', '国語': '80', '算数': '90'}
{'名前': '田中', '国語': '60', '算数': '70'}


for分で取り出したrow変数は辞書型なので項目名を指定して取り出すことができます。

# モジュールのインポート
import csv

# CSVファイルを読込みモードで開く
with open('sample.csv', 'r', encoding='UTF-8') as f:
    reader = csv.DictReader(f)    
    cnt = 1
    for row in reader:        
        print(str(cnt) + 'レコード目:' + row['名前'] + ' | ' + row['国語'] + ' | ' + row['算数'])
        cnt = cnt + 1
# 実行結果
1レコード目:佐藤 | 80 | 90
2レコード目:田中 | 60 | 70

CSVファイル書込み方法

『csv.writer』での書込み

『csv.writer』の引数にopen関数で取得したファイルオブジェクトをセットします。そしてfor分で回しながら1レコードずつ出力しています。

# モジュールのインポート
import csv

# 出力データ
out_list = [['名前','国語','算数'],['高橋','50','60'],['鈴木','30','40']]

# CSVファイルを書込みモードで開く
with open('sample2.csv', 'w', encoding='UTF-8',newline="") as f:
    writer = csv.writer(f)
    for out_data in out_list:
        writer.writerow(out_data)
# 実行結果
名前,国語,算数
高橋,50,60
鈴木,30,40

『csv.DictWriter』での書込み

『csv.DictWriter』の引数にopen関数で取得したファイルオブジェクトとヘッダー情報をセットしています。

そして、『writeheader()』でヘッダーを出力して、『writerows(out_dict)』でデータを書込んでいます。

# モジュールのインポート
import csv

# 出力データ
item = ['名前','国語','算数']
out_dict = {'名前':'高橋','国語':'70','算数':'80',},{'名前':'鈴木','国語':'30','算数':'40'}

# CSVファイルを書込みモードで開く
with open('sample2.csv', 'w', encoding='UTF-8',newline="") as f:
    writer = csv.DictWriter(f, fieldnames=item)
    writer.writeheader()
    writer.writerows(out_dict)
# 実行結果
名前,国語,算数
高橋,70,80
鈴木,30,40

まとめ

今回は「CSV」モジュールを使用したCSVファイルの読込みと書込みの説明でした。

他にもCSVファイルの読込みと書込みができるモジュールに「numpy」や「pandas」があります。こちらについても使い方をまとめていきたいと思います。

CSVファイルを扱うことは多々あると思うので、皆様のお役に立てば嬉しいです。