pandasPython数据分析

图解pandas的排序sort_values机制

2021-07-08  本文已影响0人  皮皮大

图解Pandas的排序sort_values函数

大家好,我是Peter~

在上一篇pandas的文章中已经介绍排名机制中rank函数的使用。其实在实现排名的过程,已经顺带实现了排序的功能;但是pandas中还有一个重要的方法来解决排序问题:sort_values。

image

Pandas连载

Pandas文章已经形成连载,前10篇文章分别是:

image

参数解释

DataFrame.sort_values(by, 
               axis=0, 
               ascending=True, 
               inplace=False, 
               kind='quicksort', 
               na_position='last', # last,first;默认是last
               ignore_index=False, 
               key=None)

参数的具体解释为:

image image

参数案例说明

下面会通过不同的案例来说明各个参数的使用方法和含义,模拟的第一份数据如下,里面有一个缺失值:

df = pd.DataFrame({
    '姓名': ['Tom', 'Peter', 'Jack', 'Jim', 'Mike', 'Nob'],
    '语文': [112, 112, 131, 98, 117, 124],
    '数学': [127, 139, 100, 133, 122, 114],
    '外语': [139, 88, 140, np.nan, 122, 114],   # 存在缺失值
    '住址': ['深圳', '广州', '深圳', '珠海', '广州', '东莞']}
)

df  
image

by

by参数是必需的,也是最简单的参数:我们必须指定按照哪个列属性或者行索引来排序,可以是一个或多个,by关键字可以省略。

df.sort_values(by="数学")   
df.sort_values(by=["语文","数学"])  # 多个字段的排序

axis

axis参数表示的是在哪个方向上排序,axis=0纵轴,axis=1横轴,看一份新的模拟数据:

data = pd.DataFrame({'a':[7,4,6,3],
                     'b':[4,3,2,1],
                     'c':[8,9,5,1]}) 
data

# 结果
  a b c
0   7   4   8
1   4   3   9
2   6   2   5
3   3   1   1
image

inplace

当inplace=True的时候,原数据在排序之后会直接修改:

image image

ascending

可以是一个或者多个字段的排序,通过列表的形式指定:

df.sort_values(by="数学",ascending=False)   # 一个字段排序

df.sort_values(by=["语文","数学"],  # 多个字段的不同排序方式
               ascending=[True,False]
              )  
image

na_position

缺失值的位置处理:默认是最后,也可以放到最前面:

image

上面默认是在末尾。也可以放在首位:

image

ignore_index

表示新生成的数据中的索引是采用原数据的索引还是新生成的0,1,2,3…...

image

key

表示在排序之前使用的函数:

Apply the key function to the values before sorting. This is similar to the key argument in the builtin sorted() function, with the notable difference that this key function should be vectorized. It should expect a Series and return a Series with the same shape as the input. It will be applied to each column in by independently.

为了解释key参数,我们再模拟一份数据:

data1 = pd.DataFrame({
    'col1': [2, 1, 9, 8, 7, 4],
    'col2': [0, 1, 9, 4, 2, 3],
    'col3': ['a', 'e', 'F', 'B', 'c', 'D']
})

data1
image image

上面的例子很好地显示了参数key的使用,解释下上面两行代码的运行结果,我们对col3字段排序:

总结

排序sort_values函数在平时使用的频率是非常高的,经常需要对销售数据做TopN分析。它能够很快地运用于电商领域,包含TopN的销售额、用户、商品、销售员业绩等;不同学科的排名,学生的成绩等诸多场景,希望对读者有所帮助。

上一篇 下一篇

猜你喜欢

热点阅读