Pandas 是一个 Python 库,主要用于数据分析。Pandas 使导入、清理、探索、操作和分析数据变得更加容易。在本教程中,我们将了解sort_index()
Pandas 中可用的功能。
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 / ‘索引’, 1 / ‘列’ |
0 |
等级 | 引用数据帧排序的级别。如果不是“无”,则对指定索引级别中的值进行排序。 | int 或级别名称或整数列表或级别名称列表 | 不适用 |
上升 | 按升序或降序排序。 | 布尔值或布尔值列表:“True”、“False” | 真的 |
到位 | 修改现有数据框或创建新数据框。 | 布尔值:“真”、“假” | 错误的 |
种类 | 要应用的排序算法类型。 | “快速排序”、“合并排序”、“堆排序”、“稳定” | 快速排序 |
na_位置 | 放置 NaN 的位置。 | ‘第一个’、‘最后一个’ | 最后的 |
剩余排序 | 指定数据框按指定级别排序后是否要按其他级别排序。 | 布尔值:“真”、“假” | 真的 |
忽略索引 | 如果为 True,则生成的轴将标记为 0、1、…、n – 1。 | 布尔值:“真”、“假” | 错误的 |
钥匙 | 指定是否要根据某些自定义键对数据框进行排序 | 用户定义的任何自定义键 | 不适用 |
返回:一个排序的对象,即数据帧。如果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”)按升序对其进行排序。结果,我们得到了如图所示的上面的dataframe。
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。让我们看看如何定位这些值。
A。首先定位 NaN
emp_df2 = emp_df.sort_index(na_position = 'first' ) emp_df2 |
输出:
这里,数据帧根据其索引(即 Emp_Id)进行排序,并且 NaN 值首先放置在结果数据帧中。
另请阅读:如何用 0 替换 Pandas 数据框中的 NaN 值?
b. 最后放置 NaN
emp_df3 = emp_df.sort_index(na_position = 'last' ) emp_df3 |
输出:
在此示例中,数据帧根据其索引(即 Emp_Id)进行排序,并且 NaN 值放置在结果数据帧的最后。
结论
这就是本教程的全部内容!我们已经了解了 Pandas 中的 sort_index() 函数。您可以通过此处的教程了解有关 Pandas 的更多信息。