如何对 Pandas 系列进行排序?

如何对 Pandas 系列进行排序?

Pandas 是 Python 语言中一个高效、灵活、易于使用的数据分析和数据操作工具库。而排序是在数据分析中非常重要的一步,因此,正确地对 Pandas 系列进行排序是非常必要的。

本文将介绍如何对 Pandas 系列进行排序,主要分为以下两种情况:

  1. 对 Series 对象的排序
  2. 对 DataFrame 对象的排序

更多Pandas相关文章,请阅读:Pandas 教程

对 Series 对象的排序

在 Pandas 中,Series 对象是一维标签数组,在进行排序时可以按照索引或者按照值进行排序。为了演示如何对 Series 对象进行排序,我们首先需要导入 Pandas 库并构造一个 Series 对象。

import pandas as pd

s = pd.Series([2, 1, 3, 5, 4])
print(s)

输出:

0    2
1    1
2    3
3    5
4    4
dtype: int64

我们可以看到,该 Series 对象包含了一些随机的整数,我们可以使用 sort_values() 函数按值对 Series 对象进行升序或降序排序。

# 按升序排序
s_ascend = s.sort_values()
print(s_ascend)

# 按降序排序
s_descend = s.sort_values(ascending=False)
print(s_descend)

输出:

1    1
0    2
2    3
4    4
3    5
dtype: int64

3    5
4    4
2    3
0    2
1    1
dtype: int64

我们可以看到,按升序排序后,Series 对象的值从小到大排序,按降序排序后,Series 对象的值从大到小排序。我们还可以按照索引进行排序,使用 sort_index() 函数即可。

# 按索引升序排序
s_index_ascend = s.sort_index()
print(s_index_ascend)

# 按索引降序排序
s_index_descend = s.sort_index(ascending=False)
print(s_index_descend)

输出:

0    2
1    1
2    3
3    5
4    4
dtype: int64

4    4
3    5
2    3
1    1
0    2
dtype: int64

我们可以看到,按升序排序后,Series 对象的索引从小到大排序,按降序排序后,Series 对象的索引从大到小排序。

对 DataFrame 对象的排序

在 Pandas 中,DataFrame 对象是一个表格型的数据结构,每列数据可以是不同的类型,而且可以有行标签和列标签。与 Series 对象一样,DataFrame 对象也可以按照列的值或者按照行的值进行排序。为了演示如何对 DataFrame 对象进行排序,我们首先需要导入 Pandas 库并构造一个 DataFrame 对象。

import pandas as pd

df = pd.DataFrame({'name':['Tom', 'Jerry', 'Jerry', 'Tom', 'Jenny'], 'score':[75, 86, 42, 91, 68]})
print(df)

输出:

    name  score
0    Tom     75
1  Jerry     86
2  Jerry     42
3    Tom     91
4  Jenny     68

我们可以看到,该 DataFrame 对象包含了学生的姓名和考试成绩,我们可以使用 sort_values() 函数按值对 DataFrame 对象进行升序或降序排序。需要注意的是,sort_values() 函数需要我们指定排序的列名。

# 按升序排序
df_ascend = df.sort_values(by='score')
print(df_ascend)

# 按降序排序
df_descend = df.sort_values(by='score', ascending=False)
print(df_descend)

输出:

    name  score
2  Jerry     42
4  Jenny     68
0    Tom     75
1  Jerry     86
3    Tom     91

    name  score
3    Tom     91
1  Jerry     86
0    Tom     75
4  Jenny     68
2  Jerry     42

我们可以看到,按升序排序后,DataFrame 对象的 score 列按照从小到大排序,按降序排序后,DataFrame 对象的 score 列按照从大到小排序。

我们也可以按照多列的值进行排序。假设我们需要先按照 score 列排序,如果分数相同,则按照 name 列排序。代码如下:

df_multisort = df.sort_values(by=['score', 'name'], ascending=[True, False])
print(df_multisort)

输出:

    name  score
2  Jerry     42
4  Jenny     68
0    Tom     75
1  Jerry     86
3    Tom     91

我们可以看到,DataFrame 对象先按照 score 列排序,如果分数相同,则按照 name 列排序。这样的排序方式更加灵活,能够更好的满足实际需求。

当然,还可以按照行的索引进行排序。使用 sort_index() 函数即可。

# 按索引升序排序
df_index_ascend = df.sort_index()
print(df_index_ascend)

# 按索引降序排序
df_index_descend = df.sort_index(ascending=False)
print(df_index_descend)

输出:

    name  score
0    Tom     75
1  Jerry     86
2  Jerry     42
3    Tom     91
4  Jenny     68

    name  score
4  Jenny     68
3    Tom     91
2  Jerry     42
1  Jerry     86
0    Tom     75

我们可以看到,按照索引升序排序后,DataFrame 对象的行索引按照从小到大排序,按照索引降序排序后,DataFrame 对象的行索引按照从大到小排序。这样的排序方式也能够满足一些实际需求。

结论

本文介绍了如何对 Pandas 系列进行排序,主要涉及到 Series 对象和 DataFrame 对象的排序。在对 Pandas 对象进行排序时,需要注意 sort_values() 函数和 sort_index() 函数的使用,以及对多列的排序和按照行索引的排序等问题。掌握了这些知识点后,我们就能够在数据分析中轻松地进行排序,提高了数据分析的效率。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Pandas 教程