csv

今回は標準ライブラリのcsvモジュールについてです。名前の通りcsvデータを操作するモジュールです。集計や分析を場合はサードパーティ製のpandasを使用することをおすすめしますが、単純な処理であればこれで十分でしょう。

CSVファイルの読み込み

readerメソッド

readerメソッドを使用してCSVファイルの読み込みを行います。

import csv

# CSVファイルの読み込み
with open('data.csv', 'r') as f:
    reader = csv.reader(f) # readerオブジェクトを生成
    print(type(reader)) # readerオブジェクトはlist型
    for row in reader:
        # list型オブジェクトなので、インデックスでアクセスできる
        print(row)

ヘッダーを読み飛ばす

また、ヘッダー付きのCSVファイルでヘッダーを読み飛ばしたりループ前に取得したい場合は以下のようにnext関数を使用します。

    reader = csv.reader(f)
    header = next(reader) # listに格納されるため、読み飛ばしたい場合はnextを使用する
    for row in reader:
        print(row)

TSVファイル 区切り文字を変える

TSVファイル等でカンマ以外の区切り文字を使用したい場合は、引数でdelimiterを指定します。

import csv
 
# TSVファイルの読み込み
with open('data.tsv', 'r') as f:
    reader = csv.reader(f, delimiter='\t') # delimiterを指定
    for row in reader:
        print(row)

CSVファイルの書き込み

では、今度は逆にリストデータをCSVファイルとして出力してみましょう。[[1行目][2行目][3行目][4行目]…[最終行目]]といった形式で、入れ子のリストでデータを指定します。

import csv 
 
# CSVファイルの書き込み
list_data = [['a', 'b', 'c'], [1, 2, 3], [4, 5, 6]]
with open('output.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(list_data)

実際に使用するときはappendを使用したほうが可読性が上がりますね。