一、数据准备与环境说明
1. 数据结构介绍
本次分析的 “考试成绩数据.csv” 包含以下字段:
- 基础信息:班级、学号、姓名
- 科目成绩:语文、数学、英语、理综 / 文综
- 时间信息:考试时间
2. 环境准备
首先需要安装并导入所需的库,本次实战用到pandas,后续拓展会用到matplotlib:
# 安装库(首次使用时执行)
pip install pandas matplotlib
# 导入库
import pandas as pd
import matplotlib.pyplot as plt
# 设置中文显示(解决matplotlib中文乱码问题)
plt.rcParams['font.sans-serif'] = ['SimHei'] # 黑体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
二、核心分析任务实现
任务 1:读取数据并计算学生总分、平均分
1. 需求分析
首先读取 CSV 文件中的成绩数据,然后为每位学生计算四门科目总分和平均分,并将这两个指标作为新列添加到数据框中。
2. 代码实现与解析
# 1. 读取CSV文件数据
df = pd.read_csv("考试成绩数据.csv")
print("原始成绩数据:")
print(df.head()) # 查看前5行数据,快速预览数据结构
# 定义需要计算的科目列表
subjects = ['语文', '数学', '英语', '理综/文综']
# 计算总分:按行求和(axis=1表示行维度)
df['总分'] = df[subjects].sum(axis=1)
# 计算平均分:按行求均值(axis=1表示行维度)
df['平均分'] = df[subjects].mean(axis=1)
print("\n添加总分和平均分后的成绩数据:")
print(df.head())
任务 2:按班级分组统计各科成绩指标
1. 需求分析
按 “班级” 对数据进行分组,然后统计每个班级各科目的平均分、最高分、最低分,要求使用agg函数批量完成统计,提升代码效率。
2. 代码实现与解析
# 2. 按“班级”分组,统计各科目的平均分、最高分和最低分
states = df.groupby('班级')[subjects].agg(['mean', 'max', 'min'])
# 调整列名显示(可选,让结果更易读)
states.columns = ['_'.join(col).strip() for col in states.columns.values]
print("\n各班级各科成绩统计(平均分、最高分、最低分):")
print(states)