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的知识。