(基础题)根据“某门课程平时成绩和期末考试成绩.xlsx”内容,计算课程的平时成绩和期末考试成绩的均值、标准差、方差、最小值、最大值,输出期末考试成绩排名有进步学生的名单。
首先将表的后缀改为csv,然后将该表以记事本的形式打开,然后另存为,将编码设置为UTF-8
程序代码:
import numpy as np
arr=np.array(np.loadtxt('C:/Users/hhx/Desktop/某门课程平时成绩和期末考试成绩.csv',dtype=float,delimiter=',',skiprows=1,usecols=1,encoding='utf-8'))
print("平时成绩总和: ",arr.sum())
print("平时成绩均值: ",arr.mean())
print("平时成绩标准差: ",arr.std())
print("平时成绩方差: ",arr.var())
print("平时成绩最小值: ",arr.min())
print("平时成绩最大值: ",arr.max())
arr2=np.array(np.loadtxt('C:/Users/hhx/Desktop/某门课程平时成绩和期末考试成绩.csv',dtype=float,delimiter=',',skiprows=1,usecols=2,encoding='utf-8'))
print("期末成绩总和: ",arr2.sum())
print("期末成绩均值: ",arr2.mean())
print("期末成绩标准差: ",arr2.std())
print("期末成绩方差: ",arr2.var())
print("期末成绩最小值: ",arr2.min())
print("期末成绩最大值: ",arr2.max())
sort_arr2=np.argsort(arr2,axis=0)
arr3=np.array(np.loadtxt('C:/Users/hhx/Desktop/某门课程平时成绩和期末考试成绩.csv',dtype=str,delimiter=',',skiprows=1,usecols=0,encoding='utf-8'))
ans=0
print("期末成绩排名有进步的名单为")
for i in range(len(arr2)):
for j in range(len(arr2)):
if(arr2[sort_arr2[i]]==arr2[j] and arr3[sort_arr2[i]]==arr3[j]):
if(i>j):
ans+=1
print(arr3[i])
break
argsort()是返回原数组从小到大后的索引,与原索引进行比较,当排序索引大于原索引即为进步名单,由于可能存在分数一样的情况,所以条件里多加个判断是否学生名字一样
下面的代码则是用另一种方式直接打开excel文件
程序代码:
import numpy as np
from xlrd import open_workbook
book=open_workbook(r'C:\Users\hhx\Desktop\某门课程平时成绩和期末考试成绩.xlsx')
sheet=book.sheets()[0]
arr=np.array([x.value for x in sheet.col(1,start_rowx=1)])
#print(arr)
print("平时成绩总和: ",arr.sum())
print("平时成绩均值: ",arr.mean())
print("平时成绩标准差: ",arr.std())
print("平时成绩方差: ",arr.var())
print("平时成绩最小值: ",arr.min())
print("平时成绩最大值: ",arr.max())
arr2=np.array([i.value for i in sheet.col(2,start_rowx=1)])
print("期末成绩总和: ",arr2.sum())
print("期末成绩均值: ",arr2.mean())
print("期末成绩标准差: ",arr2.std())
print("期末成绩方差: ",arr2.var())
print("期末成绩最小值: ",arr2.min())
print("期末成绩最大值: ",arr2.max())
sort_arr2=np.argsort(arr2,axis=0)
ans=0
arr3=np.array([i.value for i in sheet.col(0,start_rowx=1)])
print("期末成绩排名有进步的名单为")
for i in range(len(arr2)):
for j in range(len(arr2)):
if(arr2[sort_arr2[i]]==arr2[j] and arr3[sort_arr2[i]]==arr3[j]):
if(i>j):
ans+=1
print(arr3[i])
break