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

网站首页 > 技术文章 正文

python入门-day21-周末复习

hfteth 2025-05-16 13:27:43 技术文章 6 ℃

周末复习,这个任务旨在让你在周末放松的同时巩固前两周的学习成果,并通过一个自选小任务优化之前的项目。


学习目标

  • 复习前两周(Day 18-20)的核心内容,包括 Pandas 和 Matplotlib 的基础。
  • 完成之前未完成的练习或挑战。
  • 通过一个自选小任务优化之前的项目,提升代码质量或功能。

任务步骤

  1. 复习前两周内容
  2. Day 18: Pandas 基础
  3. 复习 Series 和 DataFrame 的创建与操作。
  4. 回顾读取 CSV 文件和计算平均值的代码。
  5. Day 19: 可视化基础
  6. 复习折线图和柱状图的绘制方法。
  7. 回忆如何设置标题、标签和网格。
  8. Day 20: 综合练习
  9. 复习学生成绩分析项目,包括数据读取、平均分计算和图表绘制。
  10. 建议:快速运行之前写的代码,确保理解每个部分的逻辑。
  11. 完成未完成练习
  12. 检查 Day 18-20 的额外挑战是否完成。如果没有,选择至少一个完成:
  13. Day 18: 为 DataFrame 添加 Grade 列并排序。
  14. Day 19: 在折线图中添加平均温度线。
  15. Day 20: 计算学生总分并找出最高分。
  16. 如果所有练习都已完成,可以跳到第 3 步。
  17. 自选小任务:优化之前的项目
  18. 从 Day 18-20 中选择一个项目进行优化。以下是一些建议:
  19. 优化 Day 18 的 CSV 分析
  20. 添加异常值检测:找出成绩低于 60 或高于 95 的数据。
  21. 输出更详细的统计信息(如中位数、最大值、最小值)。
  22. 优化 Day 19 的温度可视化
  23. 添加颜色区分:温度高于 23°C 用暖色调,低于用冷色调。
  24. 将折线图和柱状图合并到一个画布上(使用子图)。
  25. 优化 Day 20 的学生成绩分析
  26. 添加新功能:按科目筛选出优秀学生(例如成绩 > 90)。
  27. 美化图表:为柱状图添加数据标签,为直方图调整区间并添加平均线。

参考代码(优化 Day 20 示例)

以下是优化 Day 20 学生成绩分析项目的代码示例,增加了优秀学生筛选和图表美化功能:

python

import pandas as pd
import matplotlib.pyplot as plt

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

# 计算平均分
averages = df[['math', 'english', 'science']].mean()
print("\n各科目平均分:")
print(averages)

# 新功能:筛选优秀学生(成绩 > 90)
excellent_students = df[df['math'] > 90][['name', 'math']]
print("\n数学成绩优秀的学生(>90):")
print(excellent_students)

# 优化柱状图 - 添加数据标签
plt.figure(figsize=(8, 5))
bars = plt.bar(averages.index, averages.values, color=['skyblue', 'lightgreen', 'salmon'])
plt.title('Average Scores by Subject')
plt.xlabel('Subjects')
plt.ylabel('Average Score')
plt.ylim(0, 100)
for bar in bars:  # 添加数据标签
    yval = bar.get_height()
    plt.text(bar.get_x() + bar.get_width()/2, yval + 1, round(yval, 1), ha='center')
plt.show()

# 优化直方图 - 添加平均线
plt.figure(figsize=(8, 5))
plt.hist(df['math'], bins=5, color='lightblue', edgecolor='black')
plt.axvline(df['math'].mean(), color='red', linestyle='dashed', linewidth=1, label=f'Mean: {df["math"].mean():.1f}')
plt.title('Math Score Distribution')
plt.xlabel('Score')
plt.ylabel('Number of Students')
plt.legend()
plt.show()

代码亮点

  • 优秀学生筛选: 使用 Pandas 的布尔索引筛选出数学成绩 > 90 的学生。
  • 柱状图优化: 用 plt.text() 在柱子顶部显示具体数值。
  • 直方图优化: 用 axvline() 添加平均线并显示图例。

额外建议

  • 如果觉得任务量太大,可以选择只完成一个优化点。
  • 记录复习中的疑问或灵感,为下周学习做准备。

完成标准

  • 复习 Day 18-20 的核心内容并运行至少一个相关代码。
  • 完成至少一个未完成的练习或优化一个项目。
  • 能够总结前两周学到的关键技能(如数据处理、可视化)
最近发表
标签列表