学生成绩分析报告数据分析可视化python实现源码seaborn、matplotlib

这篇博客通过Python的seaborn和matplotlib库,详细展示了如何进行学生成绩分析,包括读取不同学期的成绩数据,计算各科及总成绩平均分,进行成绩排序,绘制柱状图和条形图,以及分析成绩排名变化和各科贡献率。
摘要由CSDN通过智能技术生成

最终报告见文末资源链接
1.导入包,设置显示

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
%matplotlib inline

2.读取2019年期末成绩数据

data1 = pd.read_excel('2019期末.xls',skip=0)
data1.rename(columns={
   '现在班级':'班级'},inplace=True)
data1.drop(['考号','座号','考室','学籍号','考场','学籍班级'],axis=1,inplace=True)
data1['班级'] = data1['班级'].astype('str')
data1.head()
班级 姓名 语文 数学 外语 政治 历史 地理 生物 总分
0 2.1 蒋博文 126.0 126.0 128.0 91.0 82.0 98.0 84.0 735.0
1 2.2 刘悦 111.0 135.0 115.0 75.0 80.0 96.0 16.0 628.0
2 2.4 秦浩 108.0 116.0 102.0 64.0 78.0 75.0 53.0 596.0
3 2.1 曹月婷 107.0 133.0 113.0 83.0 73.0 96.0 60.0 665.0
4 2.4 刘金红 112.0 126.0 123.0 74.0 42.0 38.0 34.0 549.0

3.读取2020年月考成绩数据

data2 = pd.read_excel('2020月考.xlsx',skip=1)
data2.rename(columns={
   '班级名称':'班级'},inplace=True)
data2.drop(['考号','座位号','考室','级名'],axis=1,inplace=True)
data2['班级'] = data2['班级'].astype('str')
data2.head()
班级 姓名 语文 数学 外语 物理 总分
0 2.4 陈泳奇 126 125 145.5 90 486.5
1 2.1 蒋博文 126 118 140.0 95 479.0
2 2.4 刘鑫 131 121 133.0 94 479.0
3 2.2 徐睿 130 113 138.5 91 472.5
4 2.6 刘威 124 122 130.0 97 473.0

4.读取2021年期末数据

data3 = pd.read_excel('2021期末.xlsx',sheet_name='成绩录入')
data3.rename(columns={
   '班级名称':'班级'},inplace=True)
data3.drop(['年级','考号','化学','座位号','考室','班名次','级名次'],axis=1,inplace=True)
data3['班级'] = data3['班级'].astype('str')
data3.head()
班级 姓名 语文 数学 外语 物理 生物 政治 历史 地理 总分
0 2.5 袁奇 81 74 54.5 61 47 64 60 39 480.5
1 2.1 何明娅 87 45 50.0 31 55 59 46 48 421.0
2 2.6 叶鑫 97 126 104.0 93 79 64 61 69 693.0
3 2.4 龙咏婷 101 91 118.0 78 79 66 62 64 659.0
4 2.2 张琬琪 84 87 42.5 19 43 56 30 39 400.5

5.按班级,求各科和总成绩平均

total_avg1 = data1.groupby('班级',as_index = False).agg({
   '总分':np.mean,'语文':np.mean,'数学':np.mean,'外语':np.mean,'政治':np.mean,'历史':np.mean,'地理':np.mean,'生物':np.mean})
total_avg1
班级 总分 语文 数学 外语 政治 历史 地理 生物
0 2.1 466.230159 102.338710 96.112903 72.452381 72.306452 45.451613 54.000000 29.919355
1 2.2 463.311475 99.918033 92.131148 72.065574 68.262295 46.229508 55.377049 29.327869
2 2.3 492.482759 103.931034 87.155172 87.241379 65.982759 51.155172 61.862069 35.155172
3 2.4 471.983607 104.442623 87.442623 85.426230 63.786885 52.000000 46.819672 32.065574
4 2.5 462.800000 98.133333 94.566667 79.216667 62.766667 50.233333 46.633333 31.250000
5 2.6 415.983871 96.564516 88.870968 63.580645 57.000000 42.354839 38.225806 29.387097
total_avg2 = data2.groupby('班级',as_index = False).agg({
   '语文':np.mean,'数学':np.mean,'外语':np.mean,'物理':np.mean})
# total_avg2['班级'] = total_avg2['班级'].astype('str')
total_avg3 = data3.groupby('班级',as_index = False).agg({
   '总分':np.mean,'语文':np.mean,'数学':np.mean,'外语':np.mean,'物理':np.mean,'政治':np.mean,'历史':np.mean,'地理':np.mean,'生物':np.mean})

6.对平均分进行排序

total_avg3.sort_values(by=['总分'
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值