1. はじめに
Pythonでデータを扱う場面では、CSVファイル(Comma Separated Values)を読み書きする機会が非常に多くあります。
特に、業務でのデータ処理や学習データの前処理、スクレイピング結果の保存などで重宝されます。
本記事では、PythonでCSVファイルを読み込んだり、書き出したりする方法について、基礎から丁寧に解説していきます。
具体的なコード例や、実務でよくある使い方、初心者がつまづきやすいポイントまで網羅しますので、ぜひ最後までご覧ください。
2. PythonでのCSVファイル読み込み・書き込みの基本
2-1. Pythonのcsvモジュールとは?
Pythonでは標準ライブラリの csv
モジュールを使って、簡単にCSVファイルを操作することができます。
インストール不要で使えるため、初心者にも扱いやすいのが特徴です。
2-2. CSVファイルを読み込む基本構文
import csv
# ファイルを読み込みモードで開く
with open('sample.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
実行結果:
['Name', 'Age', 'City']
['Alice', '25', 'Tokyo']
['Bob', '30', 'Osaka']
※ sample.csv
は以下のような内容を想定しています。
Name,Age,City
Alice,25,Tokyo
Bob,30,Osaka
2-3. CSVファイルに書き込む基本構文
import csv
# 書き込み用データ
data = [
['Name', 'Age', 'City'],
['Charlie', '28', 'Nagoya'],
['Diana', '22', 'Sapporo']
]
# ファイルを書き込みモードで開く(上書きされます)
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
実行結果:
Name,Age,City
Charlie,28,Nagoya
Diana,22,Sapporo
3. よくある使い方・応用例
3-1. ヘッダー付きCSVを辞書形式で扱う
import csv
# 辞書形式で読み込む
with open('sample.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
print(f"{row['Name']} は {row['City']} に住んでいます。")
実行結果:
Alice は Tokyo に住んでいます。
Bob は Osaka に住んでいます。
3-2. 条件付きでCSVデータを抽出する
import csv
with open('sample.csv', mode='r', encoding='utf-8') as file:
reader = csv.DictReader(file)
for row in reader:
if int(row['Age']) >= 25:
print(row)
実行結果:
{'Name': 'Alice', 'Age': '25', 'City': 'Tokyo'}
{'Name': 'Bob', 'Age': '30', 'City': 'Osaka'}
3-3. 追記モードでCSVファイルにデータを追加する
import csv
new_data = ['Eve', '35', 'Fukuoka']
with open('output.csv', mode='a', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerow(new_data)
4. 注意点・エラー対策
4-1. 改行が空行になる問題
WindowsでCSVを書き込む際、改行が空行として出力されることがあります。これは open()
に newline=''
を指定することで防げます。
✕ 悪い例:
open('file.csv', 'w')
〇 正しい例:
open('file.csv', 'w', newline='')
4-2. 文字化け対策(エンコーディング)
特に日本語を扱う場合は、文字コードに注意しましょう。一般的には utf-8
を使いますが、Excelで開く前提なら cp932
や utf-8-sig
を使うと安心です。
4-3. データ型は文字列として扱われる点に注意
CSVはすべて文字列として読み込まれるため、数値として扱うには int()
や float()
に変換が必要です。
5. まとめ
本記事では、PythonでCSVファイルを読み書きする基本から応用までを丁寧に解説しました。
学んだポイント:
csv.reader
/csv.writer
を使ってCSVを簡単に操作できる- 辞書形式での扱いが可能で、データ抽出や加工に便利
- 改行や文字化け、データ型の扱いに注意が必要
CSVは実務でもよく使われるフォーマットです。スクレイピング結果の保存やデータ前処理など、あらゆる場面で役立ちますので、ぜひこの知識を活かしてください。