网站首页 > 技术文章 正文
综合练习 这个任务将结合之前学习的内容(文件操作、数据处理和可视化),通过一个实际项目帮助学习者巩固技能。
学习目标
- 综合运用文件操作、数据处理和可视化技能。
- 掌握从 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
任务步骤
- 准备工作
- 安装依赖(如果尚未安装):
- pip install pandas matplotlib
- 创建或获取 CSV 文件:
- 可以手动创建一个 student_scores.csv 文件,内容如上所示。
- 或者使用代码生成示例文件:
- python
- 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)
- 读取数据
- 目标:使用 Pandas 读取 CSV 文件中的学生成绩数据。
- 步骤:
- 导入 Pandas。
- 使用 pd.read_csv() 读取文件。
- 检查数据是否正确加载。
- 示例代码:
- python
- import pandas as pd # 读取 CSV 文件 df = pd.read_csv("student_scores.csv") print("学生成绩数据:") print(df)
- 计算平均分
- 目标:计算每门课程的平均分。
- 步骤:
- 使用 Pandas 的 mean() 函数计算每列(科目)的平均值。
- 显示结果。
- 示例代码:
- python
- # 计算每门课的平均分 average_scores = df[["Math", "English", "Science"]].mean() print("\n每门课程的平均分:") print(average_scores)
- 绘制成绩分布图
- 目标:使用 Matplotlib 绘制直方图,展示某门课程的成绩分布。
- 步骤:
- 导入 Matplotlib。
- 选择一门课程(例如 Math),用 plt.hist() 绘制直方图。
- 添加标题和标签。
- 示例代码:
- python
- 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()
- 综合代码
- 将所有功能整合为一个完整的程序:
- python
- 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 提供了一个综合性的项目,涵盖了文件操作、数据分析和可视化。如果需要进一步调整或详细解释,请告诉我!
猜你喜欢
- 2025-05-10 2023最新!210个Python练习案例附源码(百看不如一练)
- 2025-05-10 python练习:用turtle画超酷炫的图形,不看后悔系列
- 2025-05-10 说Python基础差的同学,请疯狂啃-247个Python实战案例
- 2025-05-10 python学习方法很重要,整整400集教程(视频+源码+配套练习)
- 2025-05-10 Python 基础编程题100例(python经典编程题和答案)
- 2025-05-10 Python基础不扎实?这100道题帮你查漏补缺,快速提升编程能力!
- 2025-05-10 值得学习练手的70个Python项目(附代码),太实用了
- 2025-05-10 100道python练习题,献给嗜学如狂的人,疯狂白嫖
- 2025-05-10 如何用Python快速实现AI模型训练(python做模型)
- 2025-05-10 Python编程绝对初学者指南,一步一步的指南,有示例和实验练习
- 258℃Python短文,Python中的嵌套条件语句(六)
- 258℃python笔记:for循环嵌套。end=""的作用,图形打印
- 257℃PythonNet:实现Python与.Net代码相互调用!
- 252℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 252℃Python实现字符串小写转大写并写入文件
- 108℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 83℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)