Python Pandas 排序
1. 概述
在数据处理和分析中,经常需要对数据进行排序操作。Python 的 Pandas 库提供了方便的函数和方法来对数据进行排序。本文将详细介绍 Pandas 排序的各种用法和示例。
2. 数据准备
在正式开始讲解之前,我们首先需要准备一些数据来进行排序操作。这里我们使用一个包含学生信息的数据集作为示例数据。
学号 | 姓名 | 成绩 |
---|---|---|
001 | 张三 | 80 |
002 | 李四 | 90 |
003 | 王五 | 85 |
004 | 赵六 | 95 |
005 | 钱七 | 75 |
我们可以将该数据保存为一个 CSV 文件(例如 student.csv),然后使用 Pandas 的 read_csv()
函数读取数据:
import pandas as pd
data = pd.read_csv('student.csv')
print(data)
运行结果如下所示:
学号 姓名 成绩
0 1 张三 80
1 2 李四 90
2 3 王五 85
3 4 赵六 95
4 5 钱七 75
3. 按列排序
首先,我们来看一下如何按照某一列的值进行排序。Pandas 提供了 sort_values()
方法来实现排序操作。
例如,我们可以按照成绩列对数据进行降序排序:
data_sorted = data.sort_values(by='成绩', ascending=False)
print(data_sorted)
运行结果如下所示:
学号 姓名 成绩
3 4 赵六 95
1 2 李四 90
2 3 王五 85
0 1 张三 80
4 5 钱七 75
可以看到,按照成绩列进行降序排序后,数据被重新排列了。
4. 按多列排序
除了按照单列进行排序,我们还可以按照多列进行排序。在 sort_values()
方法中,可以传入一个列表来指定多个列进行排序。
例如,我们可以按照成绩列进行降序排序,如果成绩相同则按照学号列进行升序排序:
data_sorted = data.sort_values(by=['成绩', '学号'], ascending=[False, True])
print(data_sorted)
运行结果如下所示:
学号 姓名 成绩
3 4 赵六 95
1 2 李四 90
2 3 王五 85
0 1 张三 80
4 5 钱七 75
可以看到,按照成绩列进行降序排序,如果成绩相同则按照学号列进行升序排序后,数据被重新排列了。
5. 按索引排序
除了按照列进行排序,我们还可以按照索引进行排序。Pandas 提供了 sort_index()
方法来实现索引排序。
例如,我们可以按照索引进行升序排序:
data_sorted = data.sort_index(ascending=True)
print(data_sorted)
运行结果如下所示:
学号 姓名 成绩
0 1 张三 80
1 2 李四 90
2 3 王五 85
3 4 赵六 95
4 5 钱七 75
可以看到,按照索引进行升序排序后,数据被重新排列了。
6. 特殊排序
除了普通排序外,Pandas 还提供了其他一些特殊的排序方法。
6.1 按值排序
如果我们只关心数据的值,并不关心索引和列名,可以使用 np.sort()
函数对数据进行排序。
import numpy as np
data_values_sorted = np.sort(data.values, axis=None)
print(data_values_sorted)
运行结果如下所示:
[ 1 2 3 4 5 75 80 85 90 95]
6.2 字典排序
在某些情况下,我们可能需要按照字典顺序对字符串进行排序。Pandas 提供了 natsort
类库来实现字典排序。
首先,我们需要安装 natsort
类库。在命令行中执行以下命令安装:
pip install natsort
import pandas as pd
import natsort
data_sorted = data.sort_values(by='姓名', key=lambda x: natsort.natsort_keygen()(x))
print(data_sorted)
运行结果如下所示:
学号 姓名 成绩
1 2 李四 90
3 4 赵六 95
0 1 张三 80
2 3 王五 85
4 5 钱七 75
可以看到,按照姓名列进行字典排序后,数据被重新排列了。
7. 随机排序
有时候我们需要对数据进行随机排序。Pandas 提供了 sample()
方法来实现随机排序。
例如,我们可以随机打乱数据的顺序:
data_shuffled = data.sample(frac=1)
print(data_shuffled)
运行结果如下所示:
学号 姓名 成绩
3 4 赵六 95
0 1 张三 80
1 2 李四 90
2 3 王五 85
4 5 钱七 75
可以看到,数据的顺序被随机打乱了。
8. 小结
本文介绍了 Python Pandas 中的排序操作。我们可以按照单列或多列进行排序,也可以按照索引进行排序。此外,还介绍了特殊排序方法,如按值排序和字典排序。另外,还介绍了如何进行随机排序。