今回やること
CSVの点数表を読み込み、平均点を計算します。
CSVは表データの保存に使われるため、点数表や名簿の練習に向いています。
完成コード
csv_average_score.py を作ります。
import csv
rows = [
["name", "score"],
["Ada", "90"],
["Taro", "70"],
["Mina", "80"],
]
with open("scores.csv", "w", encoding="utf-8", newline="") as file:
writer = csv.writer(file)
writer.writerows(rows)
scores = []
with open("scores.csv", "r", encoding="utf-8") as file:
reader = csv.DictReader(file)
for row in reader:
scores.append(int(row["score"]))
average = sum(scores) / len(scores)
print(f"平均点: {average:.1f}点")
動作確認
python csv_average_score.py
平均点: 80.0点 と表示されれば成功です。
コードの考え方
- 先に練習用CSVを作成しています
csv.DictReaderで見出し名から値を取り出します- CSVの値は文字列なので
int()で数値に変換します sum(scores) / len(scores)で平均を出します
よくあるエラー
| エラー | 原因 | 修正 |
|---|---|---|
KeyError | 見出し名が違う | score の表記を確認 |
ValueError | 数字でない点数がある | CSVの値を確認 |
ZeroDivisionError | 点数が0件 | 空のCSVを避ける |
練習
- 点数を5人分に増やす
- 最高点を表示する
- 60点以上の人数を数える
次のステップ
CSVから特定の人を探す場合は Pythonミニ制作:CSVの名簿を検索する に進みます。