CSV

2025年8月17日

はじめに

CSV(Comma-Separated Values)は、データをテキスト形式で保存するためのシンプルなファイル形式であり、各データ項目がカンマ(または他の区切り文字)で区切られる。主にデータの交換や分析に利用され、Excelとの互換性が高く、比較的汎用性の高い形式である。CSVに規格はないが、ガイドラインはある(RFC 4180など)。

CSVの基本

CSVは、だいたいは以下のような形式である。

名前,年齢,性別,好きな遊び,特技
ミケ,3歳,オス,ボール遊び,高い所から飛び降りる
タマ,2歳,メス,紐引っ張り,くるくる回る
クルミ,1歳,メス,箱の中に入る,お腹を見せる

テキスト形式であり、1行ずつのまとまり(レコード)になっている。レコードはカンマ,でデータ項目(フィールド)が区切られている。1行目はヘッダーであるが、オプションである。

フィールドはダブルクウォート"で囲んでもよい。

"ミケ","3歳","オス","ボール遊び","高い所から飛び降りる"

フィールドに区切り文字を含む場合は、ダブルクウォートで囲む必要がある。

クルミ,1歳,メス,"箱の中に入る,窓から外を見る",お腹を見せる

フィールドに改行を含む場合もダブルクウォートで囲む。

クルミ,1歳,メス,箱の中に入る,"お腹を見せた後、
ごろごろ転がる"

ダブルクウォート自体を書きたい場合は、ダブルクウォートの中で""と書く。

クルミ,1歳,メス,箱の中に入る,"お腹を見せて""にゃーん""と鳴く"

区切り文字

CSVの区切り文字は、名前(「カンマで区切られた値」)からして基本的にはカンマだが、タブやセミコロン;が用いられることもある。

プログラムによる取り扱い

PythonでCSVを扱うには、次のようにする。

# read_python.py
import csv

# CSVファイルを読み込む
with open('nyanko.csv', 'r', encoding='utf-8') as file:
    reader = csv.reader(file)

    # ヘッダー行を読み込む
    header = next(reader)
    print("ヘッダー:", header)

    # データ行を読み込む
    for row in reader:
        print("データ行:", row)

実行例

$ python read_csv.py
ヘッダー: ['名前', '年齢', '性別', '好きな遊び', '特技']
データ行: ['ミケ', '3歳', 'オス', 'ボール遊び', '高い所から飛び降りる']
データ行: ['タマ', '2歳', 'メス', '紐引っ張り', 'くるくる回る']
データ行: ['クルミ', '1歳', 'メス', '箱の中に入る', 'お腹を見せる']

区切り文字を変更するには次のようにする。

    reader = csv.reader(file, delimiter='\t')

あるいは、数値データを扱うなら、Pandasを使うほうがよいかもしれない。

# read_csv2.py
import pandas as pd

# CSVファイルを読み込む
df = pd.read_csv('nyanko.csv')
print("データフレーム:")
print(df)

実行例

$ python read_csv2.py
データフレーム:
    名前  年齢  性別   好きな遊び          特技
0   ミケ  3歳  オス   ボール遊び  高い所から飛び降りる
1   タマ  2歳  メス   紐引っ張り      くるくる回る
2  クルミ  1歳  メス  箱の中に入る      お腹を見せる

区切り文字を変更するには次のようにする。

df = pd.read_csv('nyanko.csv', sep='\t')