程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

python入门-day20:综合练习(python基础训练100题)

hfteth 2025-05-10 22:06:02 技术文章 9 ℃

综合练习 这个任务将结合之前学习的内容(文件操作、数据处理和可视化),通过一个实际项目帮助学习者巩固技能。


学习目标

  • 综合运用文件操作、数据处理和可视化技能。
  • 掌握从 CSV 文件读取数据并进行简单分析的能力。
  • 学会绘制成绩分布图,直观展示学生成绩情况。

项目概述

  • 项目名称:学生成绩分析
  • 任务描述:从一个包含学生成绩的 CSV 文件中读取数据,计算每门课程的平均分,并绘制成绩分布图。
  • 所需工具
  • Pandas:用于读取和处理 CSV 数据。
  • Matplotlib:用于绘制成绩分布图。
  • 假设的 CSV 文件格式(student_scores.csv):
  • Name,Math,English,Science Alice,85,90,88 Bob,78,82,75 Charlie,92,88,95 Diana,65,70,68

任务步骤

  1. 准备工作
  2. 安装依赖(如果尚未安装):
  3. pip install pandas matplotlib
  4. 创建或获取 CSV 文件
  5. 可以手动创建一个 student_scores.csv 文件,内容如上所示。
  6. 或者使用代码生成示例文件:
  7. python
  8. import pandas as pd data = { "Name": ["Alice", "Bob", "Charlie", "Diana"], "Math": [85, 78, 92, 65], "English": [90, 82, 88, 70], "Science": [88, 75, 95, 68] } df = pd.DataFrame(data) df.to_csv("student_scores.csv", index=False)
  9. 读取数据
  10. 目标:使用 Pandas 读取 CSV 文件中的学生成绩数据。
  11. 步骤
  12. 导入 Pandas。
  13. 使用 pd.read_csv() 读取文件。
  14. 检查数据是否正确加载。
  15. 示例代码
  16. python
  17. import pandas as pd # 读取 CSV 文件 df = pd.read_csv("student_scores.csv") print("学生成绩数据:") print(df)
  18. 计算平均分
  19. 目标:计算每门课程的平均分。
  20. 步骤
  21. 使用 Pandas 的 mean() 函数计算每列(科目)的平均值。
  22. 显示结果。
  23. 示例代码
  24. python
  25. # 计算每门课的平均分 average_scores = df[["Math", "English", "Science"]].mean() print("\n每门课程的平均分:") print(average_scores)
  26. 绘制成绩分布图
  27. 目标:使用 Matplotlib 绘制直方图,展示某门课程的成绩分布。
  28. 步骤
  29. 导入 Matplotlib。
  30. 选择一门课程(例如 Math),用 plt.hist() 绘制直方图。
  31. 添加标题和标签。
  32. 示例代码
  33. python
  34. import matplotlib.pyplot as plt # 绘制 Math 成绩的分布图 plt.hist(df["Math"], bins=5, color="skyblue", edgecolor="black") plt.title("Math Scores Distribution") plt.xlabel("Score") plt.ylabel("Number of Students") plt.show()
  35. 综合代码
  36. 将所有功能整合为一个完整的程序:
  37. python
  38. import pandas as pd import matplotlib.pyplot as plt # 读取数据 df = pd.read_csv("student_scores.csv") print("学生成绩数据:") print(df) # 计算平均分 average_scores = df[["Math", "English", "Science"]].mean() print("\n每门课程的平均分:") print(average_scores) # 绘制成绩分布图(以 Math 为例) plt.hist(df["Math"], bins=5, color="skyblue", edgecolor="black") plt.title("Math Scores Distribution") plt.xlabel("Score") plt.ylabel("Number of Students") plt.show()

练习要求

  • 基础任务
  • 完成上述代码,确保能正确读取数据、计算平均分并绘制 Math 成绩的分布图。
  • 进阶挑战
  • 为 English 和 Science 也绘制分布图,并将三个图放在一个窗口中(使用 plt.subplot())。
  • 计算每位学生的总分,并找出成绩最高的学生。
  • 添加异常处理,确保程序在 CSV 文件不存在时不会崩溃。

进阶示例代码(可选)

python

import pandas as pd
import matplotlib.pyplot as plt

try:
    # 读取数据
    df = pd.read_csv("student_scores.csv")
    print("学生成绩数据:")
    print(df)

    # 计算平均分
    average_scores = df[["Math", "English", "Science"]].mean()
    print("\n每门课程的平均分:")
    print(average_scores)

    # 计算每位学生的总分
    df["Total"] = df[["Math", "English", "Science"]].sum(axis=1)
    top_student = df.loc[df["Total"].idxmax()]
    print("\n成绩最高的学生:")
    print(top_student)

    # 绘制三门课程的分布图
    plt.figure(figsize=(12, 4))

    plt.subplot(1, 3, 1)
    plt.hist(df["Math"], bins=5, color="skyblue", edgecolor="black")
    plt.title("Math Scores")
    plt.xlabel("Score")
    plt.ylabel("Number of Students")

    plt.subplot(1, 3, 2)
    plt.hist(df["English"], bins=5, color="lightgreen", edgecolor="black")
    plt.title("English Scores")
    plt.xlabel("Score")

    plt.subplot(1, 3, 3)
    plt.hist(df["Science"], bins=5, color="salmon", edgecolor="black")
    plt.title("Science Scores")
    plt.xlabel("Score")

    plt.tight_layout()
    plt.show()

except FileNotFoundError:
    print("错误:找不到 student_scores.csv 文件!")

学习成果

  • 能够从 CSV 文件中读取结构化数据。
  • 掌握使用 Pandas 进行简单统计分析(平均分计算)。
  • 学会用 Matplotlib 绘制直方图展示数据分布。
  • (可选)理解如何处理异常和展示多图。

扩展建议

  • 尝试使用其他类型的图表(例如箱线图 plt.boxplot())展示成绩分布。
  • 增加数据量(例如 20 个学生),观察分布图的变化。
  • 将分析结果保存到新的 CSV 文件中。

这个学习任务为 Day 20 提供了一个综合性的项目,涵盖了文件操作、数据分析和可视化。如果需要进一步调整或详细解释,请告诉我!

Tags:

最近发表
标签列表