ここでは 標準ライブラリ(csv + pathlib + collections)だけ を使って、CSVファイルを「職業ごとの人数カウント」する実践例を紹介します。
サンプルデータ(people.csv)
名前,年齢,職業
田中,28,エンジニア
佐藤,34,デザイナー
鈴木,22,学生
高橋,45,マネージャー
山田,29,エンジニア
伊藤,31,デザイナー
コード例:職業ごとの人数を集計
import csv
from pathlib import Path
from collections import Counter
csv_path = Path.home() / "Documents" / "people.csv"
# 職業ごとの人数をカウント
job_counter = Counter()
with csv_path.open("r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
job = row["職業"]
job_counter[job] += 1
# 結果を表示
for job, count in job_counter.items():
print(f"{job}: {count}人")
Python出力例
エンジニア: 2人
デザイナー: 2人
学生: 1人
マネージャー: 1人
応用例1: 年齢の平均を職業ごとに計算
from collections import defaultdict
ages_by_job = defaultdict(list)
with csv_path.open("r", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
job = row["職業"]
ages_by_job[job].append(int(row["年齢"]))
for job, ages in ages_by_job.items():
avg_age = sum(ages) / len(ages)
print(f"{job}: 平均年齢 {avg_age:.1f} 歳")
Python👉 出力例:
エンジニア: 平均年齢 28.5 歳
デザイナー: 平均年齢 32.5 歳
学生: 平均年齢 22.0 歳
マネージャー: 平均年齢 45.0 歳
応用例2: 集計結果を新しいCSVに保存
output_path = Path.home() / "Documents" / "job_summary.csv"
with output_path.open("w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["職業", "人数"])
for job, count in job_counter.items():
writer.writerow([job, count])
print("集計結果を保存しました:", output_path)
まとめ
collections.Counterでカテゴリごとの件数を簡単に集計できるdefaultdict(list)を使えば平均や合計などの統計処理も可能- 標準ライブラリだけで「集計 → 表示 → 保存」まで完結できる
どちらの例を見てみたいですか?

