Python | 標準ライブラリ(csv + pathlib + collections)だけ を使って、CSVファイルを「職業ごとの人数カウント」する実践例

Python
スポンサーリンク

ここでは 標準ライブラリ(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) を使えば平均や合計などの統計処理も可能
  • 標準ライブラリだけで「集計 → 表示 → 保存」まで完結できる

どちらの例を見てみたいですか?

Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました