Pandas sort_index()函数的详细指南

156 阅读4分钟

Pandas是一个Python库,主要用于数据分析。Pandas使导入、清理、探索、操作和分析数据变得更加容易。在本教程中,我们将学习Pandas中的sort_index() 函数。


sort_index()函数的语法

DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None)

参数说明可能的值默认值
按照你想排序的轴进行排序。0 / 'index',
1 / 'columns'.
0
级别参考数据框架要排序的级别。如果不是无,则按指定的索引级别的值排序。int或级别名称或ints列表或级别名称列表递增
升序按升序或降序排序。bool或bools的列表:'True', 'False'。为真
取代修改现有的数据框架或创建一个新的数据框架。bool: 'True', 'False'.假的
类型要应用的排序算法的种类。'quiksort', 'mergesort', 'heapsort', 'stable' 。quicksort
na_position放置NaN的位置。'第一', '最后'.最后一个
sort_remaining指定在按指定级别排序后,数据框是否要按其他级别进行排序。bool: 'True', 'False'.真实
忽略索引如果是True,产生的轴将被标记为0, 1, ..., n - 1。bool: 'True', 'False'(假)。假的
关键指定数据框架是否要根据某个自定义键进行排序任何由用户定义的自定义键命名

**返回。**一个被排序的对象,即数据框架。如果inplace=True ,原始数据框架本身被排序,否则用户必须指定一个新的数据框架来存储结果。如果没有指定新的数据框架,并且inplace=False ,那么将返回None。

这个函数对数字和非数字的索引值都有效。


创建一个数据框架

在我们跳到这里的例子之前,让我们首先创建一个数据框架。这将有助于我们在一个数据框架上工作,并理解Python sort_index()函数的实现:

import pandas as pd 
import numpy as np

data = {
    'Emp_Name' : ["Anna", "Jeremy", "Dennis", "Courtney", 
                            "Bob", "Ronald"],
    'Dept' : ["Operations", "Technology", "Design", "Administration",
                 "Operations", "Technology"],
    'YOE' : [12, 5, 6, 20, 8, 4]
}

Emp_Id = [4, 3, 6, 7, 1, 2]
emp_data = pd.DataFrame(data, index=Emp_Id)
emp_data

输出。

用于排序索引例子的数据框架

这是一个用于存储公司员工信息的数据框架。它包括员工的名字 (Emp_Name),他们工作的部门**(Dept)和他们的工作年限(YOE)。这些数据是在上述代码中指定的雇员ID(Emp_Id)**的基础上排列的。


实例

让我们直接进入实例,了解sort_index()函数是如何实现的,以及它是如何工作的。

1.按照索引的升序排序

# by default, axis=0 so sorting is done by row
emp_data2 = emp_data.sort_index()

emp_data2

输出

以升序排列索引

在上面的例子中,我们创建了一个名为**'emp_data2'的新数据框架,并根据索引即'Emp_Id'以升序**排序。结果,我们得到了图中所示的上述数据框架。


2.按照索引的降序排序

# by default, axis=0 so sorting is done by row
emp_data2.sort_index(ascending=False, inplace=True)

emp_data2

输出

以降序排序索引

在这里,我们通过在代码中指定ascending=False ,对数据框架进行降序排序。正如指定的那样,inplace=True ,并且由于我们没有给函数分配任何新的数据框架,emp_data2 被**"原地**"排序了。


3.根据列的标签以升序进行排序

# axis=1 implies sort by column
emp_data3 = emp_data.sort_index(axis=1)

emp_data3

输出

根据列的索引以升序排序

在这种情况下,我们有一个名为**"emp_data3 "的数据框架,其中的列标以升序排序,也就是按词典顺序排序。列标 "Emp_Name"、"Dept "和 "YOE "的词法顺序"Dept"、"Emp_Name "和 "YOE",**因此这些列现在是按照这个顺序排列的。

同样地,我们可以通过写emp_data.sort_index(axis=1, ascending=False) ,以降序的方式对数据框进行排序。这将导致下面的数据框架。

按柱子降序排列索引


4.使用na_position参数对NaN进行定位

让我们考虑一下之前的雇员数据框架的一个小修改版本,如下所示:

import pandas as pd 
import numpy as np

data = {
    'Emp_Name' : ["Anna", "Jeremy", "Dennis", "Courtney", 
                            "Bob", "Ronald"],
    'Dept' : ["Operations", "Technology", "Design", "Administration", 
                  "Operations", "Technology"],
    'YOE' : [12, 5, 6, 20, 8, 4]
}

Emp_Id = [4, np.nan, 6, np.nan, 1, 2]
emp_df = pd.DataFrame(data, index=Emp_Id)
emp_df

带有NaN的数据框架

上述数据框架的索引(即Emp_Id)中有一些NaN值。让我们看看如何定位这些值。

a.首先定位NaNs

emp_df2 = emp_df.sort_index(na_position='first')

emp_df2

输出

将NaN值放在首位

在这里,数据帧根据其索引即Emp_Id进行排序,NaN值被放在结果数据帧中的第一位

b.将NaN值放在最后

emp_df3 = emp_df.sort_index(na_position='last')

emp_df3

输出

将NaN值放在最后

在这个例子中,数据框架根据其索引(即Emp_Id)进行排序,NaN值被放在结果数据框架中的最后


总结

本教程到此结束!我们已经学习了Pandas的sort_index()函数。你可以通过关注我们的教程了解更多关于Pandas的知识。