Bootstrap

【Pandas】pandas Series sort_values

Pandas2.2 Series

Computations descriptive stats

方法描述
Series.argsort([axis, kind, order, stable])用于返回 Series 中元素排序后的索引位置的方法
Series.argmin([axis, skipna])用于返回 Series 中最小值索引位置的方法
Series.argmax([axis, skipna])用于返回 Series 中最大值索引位置的方法
Series.reorder_levels(order)用于重新排列 Series 中多层索引(MultiIndex)层级顺序的方法
Series.sort_values(*[, axis, ascending, …])用于对 Series 中的值进行排序的方法

pandas.Series.sort_values

pandas.Series.sort_values 是 Pandas 库中用于对 Series 中的值进行排序的方法。它允许用户根据不同的参数设置来灵活控制排序行为,包括升序或降序排列、处理缺失值、选择排序算法等。

参数说明
  • axis:{0 或 ‘index’}
    默认为 0,表示沿索引方向操作。对于 Series 来说,这个参数通常不需要设置。

  • ascending:布尔值或布尔值列表,默认为 True
    如果为 True,则按升序排列;如果为 False,则按降序排列。对于 Series,此参数通常是一个布尔值。

  • inplace:布尔值,默认为 False
    如果为 True,则直接在原 Series 上修改数据,而不是返回新的 Series

  • kind:字符串,默认为 'quicksort'
    指定排序算法:

    • 'quicksort':快速排序(默认)。
    • 'mergesort':归并排序。
    • 'heapsort':堆排序。
    • 'stable':稳定排序(使用 Timsort 算法)。
  • na_position:字符串,默认为 'last'
    指定缺失值(NaN)的位置:

    • 'first':将缺失值放在最前面。
    • 'last':将缺失值放在最后面(默认)。
  • ignore_index:布尔值,默认为 False
    如果为 True,则忽略原始索引,重置为整数索引。

  • key:可调用对象,默认为 None
    用于自定义排序键的函数。该函数应接受一个 Series 并返回一个 Series 或数组,作为排序的依据。


示例及结果
示例 1:基本用法(升序排序)
import pandas as pd

# 创建一个示例 Series
s = pd.Series([10, 20, 30, 40, 50])
print("原始 Series:")
print(s)

# 使用 sort_values 方法进行升序排序
sorted_s_asc = s.sort_values()
print("\n升序排序后的 Series (使用 sort_values):")
print(sorted_s_asc)

输出结果

原始 Series:
0    10
1    20
2    30
3    40
4    50
dtype: int64

升序排序后的 Series (使用 sort_values):
0    10
1    20
2    30
3    40
4    50
dtype: int64

在这个例子中,sort_values 返回了按升序排列的新 Series


示例 2:降序排序
# 使用 sort_values 方法进行降序排序
sorted_s_desc = s.sort_values(ascending=False)
print("\n降序排序后的 Series (使用 sort_values):")
print(sorted_s_desc)

输出结果

降序排序后的 Series (使用 sort_values):
4    50
3    40
2    30
1    20
0    10
dtype: int64

在这个例子中,sort_values 返回了按降序排列的新 Series


示例 3:处理缺失值
# 创建一个包含缺失值的 Series
s_na = pd.Series([10, np.nan, 20, 30, np.nan, 50])
print("原始 Series:")
print(s_na)

# 使用 sort_values 方法并将缺失值放在最前面
sorted_s_na_first = s_na.sort_values(na_position='first')
print("\n排序后的 Series (将缺失值放在最前面):")
print(sorted_s_na_first)

# 使用 sort_values 方法并将缺失值放在最后面
sorted_s_na_last = s_na.sort_values(na_position='last')
print("\n排序后的 Series (将缺失值放在最后面):")
print(sorted_s_na_last)

输出结果

原始 Series:
0    10.0
1     NaN
2    20.0
3    30.0
4     NaN
5    50.0
dtype: float64

排序后的 Series (将缺失值放在最前面):
1     NaN
4     NaN
0    10.0
2    20.0
3    30.0
5    50.0
dtype: float64

排序后的 Series (将缺失值放在最后面):
0    10.0
2    20.0
3    30.0
5    50.0
1     NaN
4     NaN
dtype: float64

在这个例子中,我们展示了如何通过 na_position 参数控制缺失值的位置。


示例 4:inplace 修改
# 直接在原 Series 上进行排序
s.sort_values(inplace=True)
print("\n使用 inplace 参数后的 Series:")
print(s)

输出结果

使用 inplace 参数后的 Series:
0    10
1    20
2    30
3    40
4    50
dtype: int64

在这个例子中,sort_values 直接修改了原 Series 的顺序。


示例 5:指定排序算法
# 使用 sort_values 方法并指定排序算法为 'mergesort'
sorted_s_mergesort = s.sort_values(kind='mergesort')
print("\n排序后的 Series (使用 mergesort):")
print(sorted_s_mergesort)

输出结果

排序后的 Series (使用 mergesort):
0    10
1    20
2    30
3    40
4    50
dtype: int64

在这个例子中,我们指定了排序算法为 mergesort


示例 6:忽略原始索引
# 使用 sort_values 方法并忽略原始索引
sorted_s_ignore_index = s.sort_values(ignore_index=True)
print("\n排序后的 Series (忽略原始索引):")
print(sorted_s_ignore_index)

输出结果

排序后的 Series (忽略原始索引):
0    10
1    20
2    30
3    40
4    50
dtype: int64

在这个例子中,sort_values 返回了一个新的 Series,其索引被重置为整数索引。


示例 7:自定义排序键
# 使用 sort_values 方法并指定自定义排序键
sorted_s_custom_key = s.sort_values(key=lambda x: -x)
print("\n排序后的 Series (使用自定义排序键):")
print(sorted_s_custom_key)

输出结果

排序后的 Series (使用自定义排序键):
4    50
3    40
2    30
1    20
0    10
dtype: int64

在这个例子中,我们使用 key 参数指定了一个自定义排序键函数,实现了降序排序。


总结

sort_values 方法提供了丰富的参数选项,可以灵活地控制 Series 的排序行为。通过合理设置参数,用户可以实现升序或降序排列、处理缺失值、选择排序算法、忽略原始索引以及应用自定义排序键等功能。这使得 sort_values 成为数据预处理和分析中非常有用的工具。

;