カテゴリ: Python 更新日: 2025/12/09

PythonでCSVファイルを扱う方法!csvモジュールの基本と活用例

PythonでCSVファイルを扱う方法!csvモジュールの基本と活用例
PythonでCSVファイルを扱う方法!csvモジュールの基本と活用例

先生と生徒の会話形式で理解しよう

生徒

「先生、Pythonで表のようなデータを扱いたいんですが、どうすればいいですか?」

先生

「いい質問ですね。表のようなデータといえば、CSVファイル(カンマ区切りのテキストファイル)を扱うのが一般的です。Pythonでは、csvモジュールを使えば簡単に操作できますよ。」

生徒

「CSVファイルって、Excelで見るようなあの表みたいなデータのことですか?」

先生

「そうです!Excelでも開けるし、テキストエディタでも読める形式です。PythonでCSVを読み込んだり書き込んだりする方法を一緒に見ていきましょう。」

1. CSVファイルとは?Pythonで扱う前に理解しておこう

1. CSVファイルとは?Pythonで扱う前に理解しておこう
1. CSVファイルとは?Pythonで扱う前に理解しておこう

CSVファイルとは、Comma Separated Values(カンマ区切り値)の略で、1行が1レコード(データの1行分)を表し、各項目はカンマ(,)で区切られています。たとえば次のような内容です。


名前,年齢,職業
田中,28,エンジニア
佐藤,34,デザイナー

このようなファイルをPythonで処理するときに便利なのが、標準ライブラリのcsvモジュールです。Pythonに最初から入っているので、インストールは不要です。

2. CSVファイルを読み込む基本(csv.reader)

2. CSVファイルを読み込む基本(csv.reader)
2. CSVファイルを読み込む基本(csv.reader)

まずは、CSVファイルをPythonで読み込む方法です。ここでは、csv.readerを使います。これは、CSVファイルを1行ずつリストとして読み取る関数です。


import csv

# CSVファイルを開く
with open("sample.csv", "r", encoding="utf-8") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

with open()はファイルを開く構文で、使い終わったあと自動的に閉じてくれます。これを「コンテキストマネージャ」と呼びます。少し難しい言葉ですが、「自動で片付けてくれる仕組み」と覚えておけばOKです。

このプログラムを実行すると、次のような出力になります。


['名前', '年齢', '職業']
['田中', '28', 'エンジニア']
['佐藤', '34', 'デザイナー']

1行ごとにリスト(配列のようなもの)として読み取られているのが分かります。

3. 辞書型で読み取る(csv.DictReader)

3. 辞書型で読み取る(csv.DictReader)
3. 辞書型で読み取る(csv.DictReader)

リストだと「列の名前」が分かりにくいですよね。そんなときはcsv.DictReaderを使います。これは1行を辞書(dict)として扱える方法です。


import csv

with open("sample.csv", "r", encoding="utf-8") as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row["名前"], row["職業"])

田中 エンジニア
佐藤 デザイナー

列名をキーとして指定できるので、コードが読みやすくなります。CSVファイルの1行目を自動的にヘッダー(列名)として認識してくれるのも便利なポイントです。

4. CSVファイルに書き込む(csv.writer)

4. CSVファイルに書き込む(csv.writer)
4. CSVファイルに書き込む(csv.writer)

次は、CSVファイルにデータを書き込む方法です。csv.writerを使うと、簡単にファイルを作成できます。


import csv

# 新しいCSVファイルを作成
with open("output.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerow(["名前", "年齢", "職業"])
    writer.writerow(["鈴木", 25, "プログラマー"])
    writer.writerow(["山田", 30, "データサイエンティスト"])

writer.writerow()は1行分を書き込む関数です。複数行を書き込みたい場合は、次のようにwriterows()を使うと便利です。


rows = [
    ["名前", "年齢", "職業"],
    ["鈴木", 25, "プログラマー"],
    ["山田", 30, "データサイエンティスト"]
]

with open("output.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.writer(file)
    writer.writerows(rows)

ファイルを開くときにnewline=""を指定しているのは、Windows環境で改行が2重にならないようにするための設定です。

5. 辞書型でCSVに書き込む(csv.DictWriter)

5. 辞書型でCSVに書き込む(csv.DictWriter)
5. 辞書型でCSVに書き込む(csv.DictWriter)

csv.DictWriterを使えば、辞書のデータをCSVに出力できます。キーと列名を対応させることで、より分かりやすくデータを書けます。


import csv

data = [
    {"名前": "田中", "年齢": 28, "職業": "エンジニア"},
    {"名前": "佐藤", "年齢": 34, "職業": "デザイナー"}
]

with open("people.csv", "w", newline="", encoding="utf-8") as file:
    fieldnames = ["名前", "年齢", "職業"]
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)

名前,年齢,職業
田中,28,エンジニア
佐藤,34,デザイナー

writeheader()でヘッダー行を書き込み、writerows()で複数の辞書データをまとめて出力します。データの追加や並び替えが必要なときにも便利です。

6. CSVモジュールを使うときの注意点と便利な使い方

6. CSVモジュールを使うときの注意点と便利な使い方
6. CSVモジュールを使うときの注意点と便利な使い方

PythonでCSVを扱うときによくある注意点も知っておきましょう。

  • 文字コード(encoding)utf-8を使うのがおすすめ。日本語の文字化けを防げます。
  • ファイルを開くときはwithを使うことで、自動で閉じてくれます。
  • 改行コードの違いで、環境によって1行空くことがあるので、newline=""を指定しましょう。

また、CSVデータを加工したり分析したりする際には、csvモジュールで読み込んだデータをリストや辞書として扱えるので、Pythonのデータ処理力を活かせます。たとえば、年齢の平均を計算したり、特定の職業だけを抽出したりも簡単に行えます。

カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.8
Java&Spring記事人気No8
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説