結論から言うと、CSVを読み込むときは標準ライブラリの csv モジュールを使うと、カンマ区切りのデータを安全に扱いやすくなります。
CSVは、Excelや業務システムから出力されることが多い形式です。
見た目はただのテキストですが、カンマや改行を自分で分割しようとすると、想定外のデータで崩れることがあります。
この記事では、Pythonで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 += amountCSVから読み込んだ値は、基本的に文字列として扱われます。
そのため、金額や数量を計算したい場合は、int() や float() で数値へ変換します。
この変換を忘れると、足し算のつもりが文字列の結合になったり、エラーになったりします。
CSVを読んだ直後に、必要な列だけ型を整えると後続処理がわかりやすくなります。
実務で使うときのポイント
実務でCSVを読むときは、ファイルの見た目だけで判断せず、列名、文字コード、空欄の有無を確認するとトラブルを減らせます。
- 列名があるCSVなら
DictReaderを使うと保守しやすいです - 日本語を含むCSVでは、まず
encoding="utf-8"で読めるか確認します - Excel由来のCSVでは、環境によって文字コードが異なる場合があります
- 金額や数量は、読み込んだあとに数値へ変換してから計算します
- 空欄が入る可能性がある列は、変換前に値があるか確認すると安全です
売上データ、在庫一覧、顧客リスト、各種システムのエクスポート結果など、CSVは自動化の入口としてよく使われます。
この読み込みの基本を押さえると、次の 3-5 のCSV書き出しや、後続のpandasを使った集計にもつなげやすくなります。