PythonでCSVファイルを扱う方法!csvモジュールの基本と活用例
生徒
「Pythonで表みたいなデータを扱うとき、どうすればいいですか?」
先生
「そういう場合はCSVファイルを使うのがおすすめです。そしてPythonにはcsvモジュールが用意されているので簡単に扱えますよ。」
生徒
「CSVって何ですか?」
先生
「CSVは『Comma Separated Values』の略で、カンマで区切られたデータです。表計算ソフトでも開けます。今日はその読み書き方法を学びましょう。」
1. CSVファイルとは?
CSVファイルは、テキスト形式で表データを保存するファイルです。1行が1レコード(1行分のデータ)で、カンマで項目が区切られます。ExcelやGoogleスプレッドシートでも開けるため、データの受け渡しに便利です。
例えば、こんな内容がCSVです。
名前,年齢,国
太郎,25,日本
花子,30,アメリカ
2. csvモジュールの基本
Pythonのcsvモジュールを使うと、CSVファイルの読み書きが簡単にできます。まずは読み込みの基本を見てみましょう。
import csv
with open("sample.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)
['名前', '年齢', '国']
['太郎', '25', '日本']
['花子', '30', 'アメリカ']
readerオブジェクトは、各行をリストとして返します。
3. CSVファイルへの書き込み
次にCSVファイルへ書き込みます。csv.writer()を使えば簡単に行を追加できます。
import csv
data = [
["名前", "年齢", "国"],
["太郎", 25, "日本"],
["花子", 30, "アメリカ"]
]
with open("output.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerows(data)
newline=""を指定すると、余分な空行が入るのを防げます。
4. 辞書形式での読み書き
DictReaderとDictWriterを使うと、CSVを辞書形式で扱えます。列名をキーとしてアクセスできるため便利です。
import csv
with open("sample.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
print(row["名前"], row["年齢"])
太郎 25
花子 30
書き込みもDictWriterを使えば列名を指定して行えます。
5. 実用的な活用例
CSVファイルはデータ分析や機械学習の前処理にも使われます。例えば、条件に合う行だけ抽出して別ファイルに保存することができます。
import csv
with open("sample.csv", "r", encoding="utf-8") as f, \
open("filtered.csv", "w", newline="", encoding="utf-8") as out:
reader = csv.DictReader(f)
writer = csv.DictWriter(out, fieldnames=reader.fieldnames)
writer.writeheader()
for row in reader:
if int(row["年齢"]) >= 30:
writer.writerow(row)
この例では、年齢が30以上の人だけを新しいCSVに書き出しています。
6. プログラミング未経験者へのアドバイス
CSVはとても汎用的なデータ形式です。まずは自分で小さなCSVファイルを作り、読み書きのコードを試すのがおすすめです。csv.reader()、csv.writer()、DictReader、DictWriterを覚えると、ほとんどのCSV操作ができるようになります。
ファイルを開くときはwith open()を使って閉じ忘れを防ぎましょう。また、文字化け防止のためにencoding="utf-8"をつける習慣をつけると安心です。