結論から言うと、CSVを書き出すときは標準ライブラリの csv モジュールを使い、列名と行データを分けて考えると整理しやすくなります。

CSVは、Excelで開いたり、別のシステムへ渡したりしやすい形式です。
ただし、文字列を自分でカンマでつなげるだけだと、値の中にカンマが入ったときに崩れることがあります。
この記事では、PythonでCSVを書き出す基本を、動くコードと一緒に整理します。

この記事でわかること

  • csv.DictWriter でCSVを書き出す方法
  • 列名と行データを分けて扱う考え方
  • CSVを書き出すときの文字コードと改行の注意点

完成コード

完成コードは次の通りです。

import csv
from pathlib import Path

csv_path = Path("sample_output.csv")

rows = [
    {"date": "2026-04-01", "item": "ノート", "amount": 1200},
    {"date": "2026-04-02", "item": "ペン", "amount": 300},
    {"date": "2026-04-03", "item": "ファイル", "amount": 800},
]

fieldnames = ["date", "item", "amount"]

with open(csv_path, mode="w", encoding="utf-8", newline="") as file:
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(rows)

print(csv_path.read_text(encoding="utf-8"))

コードのポイント

このコードでは、辞書のリストをCSVファイルとして書き出しています。

  • fieldnames でCSVの列名と列の順番を決めています
  • csv.DictWriter を使うと、辞書のキーと列名を対応させて書き出せます
  • writeheader() は1行目の見出しを書き込みます
  • writerows() は複数行のデータをまとめて書き込みます
  • newline="" を指定すると、CSVの改行処理を csv モジュールに任せやすくなります

CSVを書き出す処理では、どの列をどの順番で出すかを明確にしておくと、後から見直しやすくなります。

コードを順番に説明します

主要な処理を分けて説明します。

1. 書き出したいデータを辞書のリストで用意します

rows = [
    {"date": "2026-04-01", "item": "ノート", "amount": 1200},
    {"date": "2026-04-02", "item": "ペン", "amount": 300},
    {"date": "2026-04-03", "item": "ファイル", "amount": 800},
]

ここでは、1行分のデータを1つの辞書で表しています。
dateitemamount がCSVの列に対応します。

実務では、集計結果、検索結果、画面から入力されたデータなどを、このような形に整えてからCSVへ出力することが多いです。
行ごとの意味が見えるため、リストだけで持つより読みやすくなります。

2. fieldnames で列名と順番を決めます

fieldnames = ["date", "item", "amount"]

fieldnames は、CSVへ出力する列名の一覧です。
この順番でCSVの列が並びます。

辞書はキーで値を取り出せますが、CSVは列の並びも大切です。
そのため、出力前に fieldnames を明示しておくと、列の順番が安定します。

3. DictWriter で見出しとデータを書き込みます

with open(csv_path, mode="w", encoding="utf-8", newline="") as file:
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(rows)

csv.DictWriter は、辞書をCSVの行として書き出すための仕組みです。
writeheader() で列名を書き、writerows() で複数行をまとめて出力しています。

mode="w" は上書きモードです。
同じファイル名がすでにある場合は中身が作り直されるため、毎回最新のCSVを出力したい場面に向いています。

実務で使うときのポイント

実務でCSVを書き出すときは、出力先でどう使われるかを先に確認すると、後から修正しやすくなります。

  • Excelで開くCSVなのか、別システムへ渡すCSVなのかで文字コードの要件が変わることがあります
  • 列名は出力先の仕様に合わせて固定すると、読み込み側の処理が安定します
  • 金額や日付は、CSVへ書き出す前に表記をそろえておくと扱いやすいです
  • 既存ファイルを残したい場合は、上書き前に保存先やファイル名を確認します

売上レポート、在庫一覧、処理結果の出力、別ツールへ渡すデータ作成など、CSV書き出しは自動化でよく使います。
前の 3-4 のCSV読み込みと合わせて押さえると、CSVを使った簡単な変換処理を組み立てやすくなります。

よくある勘違い・注意点

  • CSVは文字列をカンマでつなげれば十分、とは限りません。値にカンマや改行が入ることがあります
  • writeheader() を呼ばないと、列名の行は出力されません
  • fieldnames にないキーは、そのままでは扱えない場合があります
  • mode="w" は既存ファイルを上書きするため、残したいファイルに使うときは注意が必要です

まとめ

  • PythonでCSVを書き出すなら、標準ライブラリの csv モジュールが基本です
  • 辞書のリストは csv.DictWriter と相性がよい形です
  • fieldnames で列名と順番を明示すると、出力結果が安定します
  • CSVの読み込みと書き出しを理解すると、業務データの変換や集計に進みやすくなります