結論から言うと、CSVを読み込むときは標準ライブラリの csv モジュールを使うと、カンマ区切りのデータを安全に扱いやすくなります。

CSVは、Excelや業務システムから出力されることが多い形式です。
見た目はただのテキストですが、カンマや改行を自分で分割しようとすると、想定外のデータで崩れることがあります。
この記事では、PythonでCSVを読み込む基本を、動くコードと一緒に整理します。

この記事でわかること

  • csv モジュールでCSVを読み込む方法
  • DictReader で列名を使って扱う方法
  • CSVを実務で読むときの注意点

完成コード

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

import csv
from pathlib import Path

csv_path = Path("sample_sales.csv")
csv_path.write_text(
    "date,item,amount\n"
    "2026-04-01,ノート,1200\n"
    "2026-04-02,ペン,300\n"
    "2026-04-03,ファイル,800\n",
    encoding="utf-8",
)

total = 0

with open(csv_path, mode="r", encoding="utf-8", newline="") as file:
    reader = csv.DictReader(file)
    for row in reader:
        amount = int(row["amount"])
        total += amount
        print(f"{row['date']} {row['item']} {amount}円")

print(f"合計: {total}円")

コードのポイント

このコードでは、CSVファイルを読み込み、各行の金額を合計しています。

  • csv.DictReader を使うと、列名をキーにして値を取り出せます
  • row["amount"] のように書くと、どの列を使っているかが読みやすくなります
  • CSVから読んだ値は基本的に文字列なので、計算する前に int() で数値へ変換しています
  • newline="" を指定すると、CSVの改行処理を csv モジュールに任せやすくなります

CSVは表形式のデータなので、列名で扱える形にすると実務のコードが読みやすくなります。

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

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

1. CSVファイルを用意します

csv_path = Path("sample_sales.csv")
csv_path.write_text(
    "date,item,amount\n"
    "2026-04-01,ノート,1200\n"
    "2026-04-02,ペン,300\n"
    "2026-04-03,ファイル,800\n",
    encoding="utf-8",
)

この記事のコードだけで動かせるように、最初にサンプルCSVを作成しています。
1行目は date,item,amount という列名です。

実務では、ここで作成する代わりに、システムから出力されたCSVや手元にあるCSVファイルのパスを指定します。
まずは「1行目が列名になっている表」と考えると理解しやすいです。

2. DictReader で列名を使って読み込みます

with open(csv_path, mode="r", encoding="utf-8", newline="") as file:
    reader = csv.DictReader(file)
    for row in reader:
        print(row["date"], row["item"], row["amount"])

csv.DictReader は、CSVの1行を辞書のような形で読み込める仕組みです。
列名が date なら row["date"]、列名が item なら row["item"] のように取り出せます。

列の順番に頼らず、名前で取り出せるため、コードの意味が伝わりやすくなります。
特に列数が増えるCSVでは、通常のリストよりも DictReader のほうが読みやすい場面が多いです。

3. 数値として使う列は変換します

amount = int(row["amount"])
total += amount

CSVから読み込んだ値は、基本的に文字列として扱われます。
そのため、金額や数量を計算したい場合は、int()float() で数値へ変換します。

この変換を忘れると、足し算のつもりが文字列の結合になったり、エラーになったりします。
CSVを読んだ直後に、必要な列だけ型を整えると後続処理がわかりやすくなります。

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

実務でCSVを読むときは、ファイルの見た目だけで判断せず、列名、文字コード、空欄の有無を確認するとトラブルを減らせます。

  • 列名があるCSVなら DictReader を使うと保守しやすいです
  • 日本語を含むCSVでは、まず encoding="utf-8" で読めるか確認します
  • Excel由来のCSVでは、環境によって文字コードが異なる場合があります
  • 金額や数量は、読み込んだあとに数値へ変換してから計算します
  • 空欄が入る可能性がある列は、変換前に値があるか確認すると安全です

売上データ、在庫一覧、顧客リスト、各種システムのエクスポート結果など、CSVは自動化の入口としてよく使われます。
この読み込みの基本を押さえると、次の 3-5 のCSV書き出しや、後続のpandasを使った集計にもつなげやすくなります。

よくある勘違い・注意点

  • CSVは単純に split(",") すればよいとは限りません。値の中にカンマが入るケースがあります
  • CSVから読んだ数値は、最初から数値型になっているわけではありません
  • 列名のスペルが違うと row["amount"] のような取り出しでエラーになります
  • 文字化けする場合は、CSVの文字コードを確認する必要があります

まとめ

  • PythonでCSVを読むなら、標準ライブラリの csv モジュールが基本です
  • 列名があるCSVでは csv.DictReader を使うと読みやすくなります
  • CSVから読んだ値は文字列なので、計算前に数値へ変換します
  • CSV読み込みを理解すると、書き出しやデータ集計の自動化へ進みやすくなります