pandas系列学习教程——sort_values()方法

sort_values() 方法是 Pandas 中用于对 DataFrame 或 Series 按照指定的列或索引进行排序的函数。这个方法可以方便地对数据进行升序或降序排列,同时还可以指定排序的多个列以及处理缺失值的方式。

语法

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', 
                       ignore_index=False, key=None)
参数说明
  • by: 排序的列名或列名列表。你可以指定单列或多列进行排序。
  • axis: 默认值为 0,表示按行排序;如果是 1,将按列排序。
  • ascending: 布尔值或布尔值列表,指定排序的顺序。默认为 True(升序),如果要降序排序,设置为 False。
  • inplace: 布尔值,如果为 True,表示在原 DataFrame 上进行排序。默认为 False,返回新的 DataFrame。
  • kind: 排序算法,默认为 'quicksort',可选 'mergesort''heapsort''stable'
  • na_position: 处理缺失值的位置,默认为 'last',表示缺失值排在最后,设置为 'first' 时,缺失值排在最前面。
  • ignore_index: 如果为 True,重置索引。默认为 False。
  • key: 一个可选的函数,用于执行排序时对每个列应用的变换操作。

示例

下面我们通过一些示例演示 sort_values() 方法的用法。

1. 按单列排序
import pandas as pd

# 创建示例 DataFrame
df = pd.DataFrame({
    'A': [3, 2, 1, 4],
    'B': ['d', 'b', 'a', 'c'],
})

print("原始 DataFrame:")
print(df)

# 按列 'A' 排序
df_sorted = df.sort_values(by='A')

print("\n按列 'A' 升序排序:")
print(df_sorted)

输出

   A  B
2  1  a
1  2  b
0  3  d
3  4  c
2. 按多列排序

使用多个列进行排序,这种情况下只需要为 by 参数传递一个列表。

# 创建示例 DataFrame
df = pd.DataFrame({
    'A': [1, 2, 1, 2],
    'B': ['b', 'a', 'a', 'b'],
})

print("\n原始 DataFrame:")
print(df)

# 按列 'A' 升序,列 'B' 升序排序
df_sorted = df.sort_values(by=['A', 'B'])

print("\n按列 'A' 和 'B' 升序排序:")
print(df_sorted)

输出

   A  B
2  1  a
0  1  b
1  2  a
3  2  b
3. 降序排序

通过设置 ascending 参数为 False,可以实现降序排序。

# 降序排序
df_sorted_desc = df.sort_values(by='A', ascending=False)

print("\n按列 'A' 降序排序:")
print(df_sorted_desc)

输出

   A  B
1  2  a
3  2  b
0  1  b
2  1  a
4. 处理缺失值

可以使用 na_position 参数控制缺失值的位置。

# 创建包含缺失值的 DataFrame
df_nan = pd.DataFrame({
    'A': [3, 2, None, 4],
    'B': ['d', 'b', 'a', None],
})

print("\n含有缺失值的 DataFrame:")
print(df_nan)

# 排序时将缺失值放到第一位
df_sorted_nan_first = df_nan.sort_values(by='A', na_position='first')

print("\n排序时将缺失值放到第一位:")
print(df_sorted_nan_first)

输出

     A    B
2  NaN    a
1  2.0    b
0  3.0    d
3  4.0  None
5. 在原 DataFrame 上排序

设置 inplace=True 可以直接在原 DataFrame 上进行排序。

# 直接在原 DataFrame 上排序
df_nan.sort_values(by='A', inplace=True)

print("\n直接在原 DataFrame 上排序:")
print(df_nan)

输出

     A    B
2  NaN    a
1  2.0    b
0  3.0    d
3  4.0  None
6. 根据函数排序

key 参数允许用户在排序之前对列的值应用一个函数。

# 使用 key 参数,将列 'A' 的值平方后排序
df_sorted_key = df.sort_values(by='A', key=lambda x: x**2)

print("\n根据列 'A' 的平方进行排序:")
print(df_sorted_key)

输出

     A    B
2  NaN    a
1  2.0    b
0  3.0    d
3  4.0  None

总结

sort_values() 方法是 Pandas 中非常实用的功能,它提供了灵活的排序方式,支持多列排序、升降序选择、处理缺失值以及在原 DataFrame 上进行排序。使用这个方法可以让数据分析更为方便和高效。根据你的需求选择合适的参数,会大大提升数据处理的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值