pandas操作复习_06_列降序排序

前情提要

  已经计算出了总分,那么接下来肯定要进行排名。好在pandas中对dataframe的排序也有现成的方法,何老师准备使用rank()方法来进行排序。

数据展示

倘若无数据,可拷贝以下数据到一个xlsx的文件中使用

学号 姓名 班级 语文 数学 英语 音乐 美术 体育 sum
0 A01 饶秀颖 1班 35.0 45.0 55.0 95.0 95.0 95.0 240.0
1 A02 于俊远 1班 38.0 53.0 46.0 97.0 98.0 95.0 245.6
2 A03 王五 1班 54.0 46.0 38.0 97.0 99.0 97.0 247.1
3 A08 冉颇 3班 34.0 54.0 60.0 96.0 98.0 99.0 248.3
4 A09 夫余岚裳 3班 43.0 57.0 67.0 98.0 95.0 94.0 252.5
5 A10 薛菁 3班 55.0 60.0 65.0 96.0 93.0 96.0 252.6

实际操作

基础步骤

包括导入模块、指定文件、获取数据等步骤

import pandas as pd
import numpy as np
import pathlib

file_path = pathlib.Path("/content/drive/MyDrive/Notebooks_data/score.xlsx")
data1 = pd.read_excel(file_path)

排序rank

我们先直接对整个dataframe

data1.rank()

out

学号 姓名 班级 语文 数学 英语 音乐 美术 体育 sum
0 1.0 6.0 2.0 2.0 1.0 3.0 1.0 2.5 2.5 1.0
1 2.0 1.0 2.0 3.0 3.0 2.0 4.5 4.5 2.5 2.0
2 3.0 4.0 2.0 5.0 2.0 1.0 4.5 6.0 5.0 3.0
3 4.0 2.0 5.0 1.0 4.0 4.0 2.5 4.5 6.0 4.0
4 5.0 3.0 5.0 4.0 5.0 6.0 6.0 2.5 1.0 5.0
5 6.0 5.0 5.0 6.0 6.0 5.0 2.5 1.0 4.0 6.0

会发现:学号、姓名、班级这三列竟然也被排名了,以一种不为人知的方法(只是我懒得去搜)。但我们实际上只需要对数字进行排序,如果再要求严格一点,我们只想对sum这一列的总分分数进行排名。

# 我们尝试选择dataframe中的一列
data1["sum"].rank(numeric_only=True)

out

0 1.0

1 2.0

2 3.0

3 4.0

4 5.0

5 6.0

Name: sum, dtype: float64

我们发现会输出一个针对指定列的一个排序的series。但是实际上我们发现有一点不满意的地方:默认的排序是升序!也就是说,分数最低的反而是NO.1,这与我们日常使用的降序是不一样的!

降序排序rank(numeric_only=True, sacending=False)

data1["sum"].rank(numeric_only=True, ascending=False)

out

0 6.0

1 5.0

2 4.0

3 3.0

4 2.0

5 1.0

Name: sum, dtype: float64

# 添加数据
data1["rank"] = data1["sum"].rank(numeric_only=True, ascending=False, )
data1

out

学号 姓名 班级 语文 数学 英语 音乐 美术 体育 sum rank
0 A01 饶秀颖 1班 35.0 45.0 55.0 95.0 95.0 95.0 240.0 6.0
1 A02 于俊远 1班 38.0 53.0 46.0 97.0 98.0 95.0 245.6 5.0
2 A03 王五 1班 54.0 46.0 38.0 97.0 99.0 97.0 247.1 4.0
3 A08 冉颇 3班 34.0 54.0 60.0 96.0 98.0 99.0 248.3 3.0
4 A09 夫余岚裳 3班 43.0 57.0 67.0 98.0 95.0 94.0 252.5 2.0
5 A10 薛菁 3班 55.0 60.0 65.0 96.0 93.0 96.0 252.6 1.0

数据保存

data1.to_excel("/content/drive/MyDrive/Notebooks_data/score.xlsx", index=False)

致谢链接

Pandas的排序、排名方法

posted @ 2022-02-09 14:49  小澳子  阅读(401)  评论(0编辑  收藏  举报