1.从excel文件中读出本班同学的成绩册,并处理好缺失值。
2.根据‘加分’和‘减分’两列统计出平时成绩。
3.将实验报告成绩从ABCD转换为百分制,统计出实验成绩。A为90分,B为75分,C为60分,D为40分。
4.随机生成假设的期末成绩,取值区间为40-100分。将自己的期末成绩改成你觉得可能考到的分数。
5.按照平时成绩20%,实验成绩30%,期末成绩50%的比例计算综合成绩。
6.输出你自己的平时成绩,实验成绩,期末成绩和综合成绩。
7.统计全班综合成绩[90,100],[80,89],[70,79],[60-69],[0,59]各段成绩的人数,并画饼图。
8.将完整的成绩保存到score.xlsx文件中,打开excel检查输出是否正确。
#导入库
import pandas as pd
import numpy as np
x=pd.read_excel('1990304班.xlsx') #导入文件
x = x.drop({0,1,2,3}) #删除多余的行
x.head(5) #显示前五行
s=x.iloc[:,0:3] #前三列
s.columns=["序号","学号","姓名"] #为前三列命名
s.dropna(inplace=True)#只要有空,直接删除
s['加分']=np.random.randint(1,5,45)
s['减分']=np.random.randint(-5,-1,45)
s['平时成绩']=s['加分']+s['减分']
s['平时成绩']=np.random.randint(0,101,45)
s['期末成绩']=np.random.randint(40,101,45)
c=['A','B','C','D','A','B','C','D','A','B','C','D','A','B','C','D','A','B','C','D','A','B','C','D',\
'A','B','C','D','A','B','C','D','A','B','C','D','A','B','C','D','A','B','C','D','A']
len(c)#查一下c的长度
s['实验成绩']=c
#转换数据
def transdata(x):
if x=='A':
return 90
elif x=='B':
return 75
elif x=='C':
return 60
elif x=='D':
return 40
s['实验成绩']=s['实验成绩'].map(transdata)
#修改成绩 s[列][行]
s['期末成绩'][5] =88
s['综合成绩']=s['平时成绩']*0.2+s['实验成绩']*0.3+s['期末成绩']*0.5
print(s)
#查询一个同学的所有信息
s[s.index=='朱宝']
y=pd.cut(s['综合成绩'],bins=[0,60,70,80,90,100],labels=['0-59','60-69','70-79','80-89','90-100'])#分区间
o=y.value_counts()#统计区间人数
print(o)
#画出饼图
from matplotlib import pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei']
o.plot(kind='pie',title='区间统计图')
将A、B、C、D转换为数字
#转换数据1
def trans(df):
lst=[]
for i in df:
if i=='A':
lst.append(90)
elif i=='B':
lst.append(75)
elif i=='C':
lst.append(60)
elif i=='D':
lst.append(40)
return lst
#转换数据2
def transdata(x):
if x=='A':
return 90
elif x=='B':
return 75
elif x=='C':
return 60
elif x=='D':
return 40
#转换数据1
lst=trans(s['实验成绩'])
s['实验成绩']=lst
#转换数据2
s['实验成绩']=s['实验成绩'].map(transdata)
版权声明:本文为weixin_45044349原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。