Python|CSVファイルの読み込み・書き込み

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で開く前提なら cp932utf-8-sig を使うと安心です。

4-3. データ型は文字列として扱われる点に注意

CSVはすべて文字列として読み込まれるため、数値として扱うには int()float() に変換が必要です。

 

5. まとめ

本記事では、PythonでCSVファイルを読み書きする基本から応用までを丁寧に解説しました。

学んだポイント:

  • csv.reader / csv.writer を使ってCSVを簡単に操作できる
  • 辞書形式での扱いが可能で、データ抽出や加工に便利
  • 改行や文字化け、データ型の扱いに注意が必要

CSVは実務でもよく使われるフォーマットです。スクレイピング結果の保存やデータ前処理など、あらゆる場面で役立ちますので、ぜひこの知識を活かしてください。

タイトルとURLをコピーしました