Python3-学生成绩预测基本求法
提供的数据集中的数据是 学期,学号,排名
每一个学号提供了两个学期的成绩
最终根据第一学期的成绩比重0.35,第二学期的比重为0.65
# -*- coding: utf-8 -*-
def Weight_score():
file_score = open("../data/Score Predict.csv", encoding="unicode_escape") # 将原来的txt文件按学号从大到小排序后保存为csv文件
file_result = open("./result/35_65_rank.txt", "w")
# 设置两个学期的权重比率
factor = [0.35, 0.65]
stu = {}
first_line = 0
count = 0
for line in file_score:
if first_line == 0:
first_line = 1
continue # 第一行是 学期 学号 排名,要先排除第一行
# 去除空格,以","进行分割 学期,学号,排名
sem, id, rank = line.strip("").split(",")
# 如果id不存在就赋值为0 初始化id都为0
stu.setdefault(id, 0)
# 第一学期:rank * 0.35, 第二学期:rank * 0.65 ,两学期的分数叠加起来
stu[id] += int(rank) * factor[int(sem) - 1]
count += 1
# print("stu id:{0} rank:{1}".format(stu.keys(),stu.values()))
Ranked = sorted(zip(stu.values(), stu.keys())) # 按得到的名次排序,id在后
print("数据集中的数据总数:{0} ".format(count))
file_result.write("id,rank\n")
i = 1
print("排序之后的数据")
for line in Ranked:
print("\t排名: {0} 学号: {1} ".format(i, line[1]))
# 将排序之后的 id rank写入到 file_result文件中 换行
file_result.write(line[1] + "," + str(i) + "\n")
# 行数+1
i = i + 1
file_score.close()
file_result.close()
if __name__ == '__main__':
Weight_score() # 第一二学期排名乘以权重
运行之后为:
求出来的数据写入到35_65_rank.txt中