【Python+pandas】学生测试成绩求和排序

需求

将如下每个学生三次测试的成绩求和后排序,并显示名次:

1. 导入数据

1
2
3
import pandas

df = pandas.read_excel("score.xlsx")

在本案例中,我们将使用pandas作为数据处理的第三方库(安装命令:pip install pandas).

2. 成绩求和

1
2
sum_score = [i for i in df.sum(axis=1)]
df["所有测试成绩总分"] = sum_score

df.sum(axis=1):指对每一行的数值进行求和,它所返回的对象为Series,这是一个一维数组,类似于列表.

[i for i in df.sum(axis=1)]:我们遍历Series中的每一项,获得各行成绩求和的结果,将其转化为列表的形式,最后赋予sum_score.

df["所有测试成绩总分"] = sum_score:在原有的数据表中新增所有测试成绩总分这一列,它的值为列表sum_score.

3. 排序总分 显示名次

1
2
3
df = df.sort_values(by="所有测试成绩总分", ascending=False)
df.index = range(1, len(df)+1)
print(df)

df = df.sort_values(by="所有测试成绩总分", ascending=False):以所有测试成绩总分这一列的数值为依据,进行排列,ascending=False决定排序方式为降序.

df.index = range(1, len(df)+1):为数据表重新设置索引,显示名次.

4. 保存结果

1
df.to_excel("output.xlsx")

将结果输出到文件output.xlsx.
output.xlsx如下:

5. 完整代码

1
2
3
4
5
6
7
8
9
10
11
import pandas
df = pandas.read_excel("score.xlsx")

sum_score = [i for i in df.sum(axis=1)]
df["所有测试成绩总分"] = sum_score

df = df.sort_values(by="所有测试成绩总分", ascending=False)
df.index = range(1, len(df)+1)

print(df)
df.to_excel("output.xlsx")

总结

df.sum函数用于对目标数据表的排列,当传入axis=1时,求各行的和;不传axis时,求各列的和.

df.sort_values用于对某一列的排序工作,by指定目标列,ascending决定是否为升序或降序:当其值为True时,按升序排列;反之亦然.

df.index赋予列表值可以重新设置索引列.