93 lines
2.2 KiB
Python
Executable File
93 lines
2.2 KiB
Python
Executable File
# -*- coding:utf-8 -*-
|
|
import csv
|
|
import matplotlib.pyplot as plt
|
|
import pandas as pd
|
|
import numpy as np
|
|
|
|
stu = []
|
|
StuListFinal = []
|
|
|
|
with open("成绩表.csv", "r", encoding='utf-8') as file:
|
|
reader = csv.reader(file)
|
|
column = [row[-1] for row in reader]
|
|
score = list(column)
|
|
del score[0]
|
|
|
|
def display(lb):
|
|
print('总分分别为')
|
|
for i in range(0, len(lb), 5):
|
|
yield lb[i:i + 5]
|
|
|
|
def cal():
|
|
print(*display(score), sep="\n")
|
|
print("\n数据计算:")
|
|
total, fangcha, avr = 0, 0, 0
|
|
|
|
# 平均分
|
|
for i in range(0, len(score)):
|
|
total += eval(score[i])
|
|
avr = total / 60
|
|
for i in range(0, len(score)):
|
|
fangcha += ((eval(score[i]) - avr) ** 2)
|
|
|
|
print("所有学生最高分为{2:.2f},最低分为{3:.2f},平均分为{0:.2f},方差为{1:.2f}".format(avr, fangcha / 60, float(max(score)), float(min(score))))
|
|
|
|
#work6-7
|
|
def readcsv():
|
|
f = '成绩表.csv'
|
|
s = pd.read_csv(f, usecols=[3, 4, 5, 6, 7, 8, 9])
|
|
return np.array(s)
|
|
|
|
def sorta(cv):
|
|
return cv[-1]
|
|
|
|
StuListFinal = readcsv()
|
|
|
|
def scoresAbsolute(s, stu1):
|
|
TEStu = []
|
|
for stu2 in range(len(StuListFinal)):
|
|
if stu2 != stu1:
|
|
num = []
|
|
absSum = 0
|
|
num.append(stu2)
|
|
for i in range(len(s[stu1])):
|
|
absSum += abs(s[stu1][i] - s[stu2][i])
|
|
num.append(absSum)
|
|
TEStu.append(num)
|
|
TEStu = sorted(TEStu, key=sorta)
|
|
AbSumLs = []
|
|
sum = 0
|
|
AbSumLs.append(stu1)
|
|
|
|
for i in range(9):
|
|
sum += TEStu[i][-1]
|
|
AbSumLs.append(TEStu[i][0])
|
|
AbSumLs.append(sum)
|
|
stu.append(AbSumLs)
|
|
|
|
def DrawSD(listtotal):
|
|
plt.style.use('ggplot')
|
|
x = ['Python', 'Computer', 'Math', 'Data', 'C', 'Java', 'CalMethod']
|
|
for i in range(10):
|
|
y = StuListFinal[listtotal[i]]
|
|
print(StuListFinal[listtotal])
|
|
plt.scatter(x, y)
|
|
plt.show()
|
|
|
|
def work7():
|
|
Final = []
|
|
|
|
for i in range(len(StuListFinal)):
|
|
scoresAbsolute(StuListFinal, i)
|
|
SortedStuList = sorted(stu, key=sorta)
|
|
for j in range(10):
|
|
Final.append(SortedStuList[0][j])
|
|
DrawSD(Final)
|
|
|
|
def main():
|
|
work7()
|
|
cal()
|
|
|
|
if __name__ == '__main__':
|
|
main()
|