当前位置:   article > 正文

Pandas的排序、排名方法_pandas排序取前5

pandas排序取前5

Pandas 是一个灵活而强大的Python数据分析 / 操作库,提供快速、灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观,功能十分强大。

本文讲解一下排序、排名的函数,这些经常使用的内容。

所有函数的参数中,只添加了常用的几个,其它的可以去看官方文档。


排序

1.按索引:sort_index(axis=0, ascending=True)

根据行或列的索引按照字典的顺序进行排序

  • Series 类型中
    只有左边一列是索引,使用Series.sort_index()就行了:
import numpy as np
import pandas as pd

df = pd.Series([1, 2, 3], index=["a", "c", "b"])
print(df.sort_index())
  • 1
  • 2
  • 3
  • 4
  • 5

默认按升序排序:
在这里插入图片描述
若是要按降序排序,则要加上 ascending=False

print(df.sort_index(ascending=False))
  • 1

结果:
在这里插入图片描述

  • DataFrame 类型中
    除了最左边的行索引,还有最上面的列索引。可以指定是按行索引排列还是按列索引排列:
df = pd.DataFrame(np.arange(12).reshape((4,3)), columns=['c','a','b'],
				  index=['D','B','C','A'])
print(df, '\n')
print(df.sort_index(), '\n')
print(df.sort_index(axis=1), '\n')
print(df.sort_index(axis=1, ascending=False))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

axis 便是指定按行还是按列索引的参数,默认为 0
在这里插入图片描述

2.按值:sort_values()
  • Series 类型中
    Series.sort_values(axis=0, ascending=True)
    只有一列值,使用Series.sort_values()就行了:
df = pd.Series([3, 5, 1, 7])
print(df, '\n')
print(df.sort_values(), '\n')
print(df.sort_values(ascending=False))
  • 1
  • 2
  • 3
  • 4

可得:
在这里插入图片描述

  • DataFrame 类型中
    DataFrame.sort_values(by, axis=0, ascending=True)
    不止一列值,by 指定一个索引值,axis 指定行或列:
values = [[9,3,1],[1,8,4],[2,0,5]]
df = pd.DataFrame(values, index=['0', '2', '1'], columns=['c', 'a', 'b'])
print(df, '\n')
print(df.sort_values(by='a'), '\n')
print(df.sort_values(by='2', axis=1))
  • 1
  • 2
  • 3
  • 4
  • 5

可得:
在这里插入图片描述

排名:rank()

排名会有一个排名值(从1开始,一直到数组中有效数据的数量),打印出的值就是由排名值代替原有的数据,位置并不改变即索引不改变。

  • Series 类型中
    Series.rank(axis=0, method=‘average’, ascending=True)
df = pd.Series([5, 9, -2, 1, 1, 7])
print(df, '\n')
print(df.rank(), '\n')    # 若有相同的数,默认取其排名平均作为值
print(df.rank(method="first"))    # 若有相同的数,根据值在数组中出现的顺序进行排名
  • 1
  • 2
  • 3
  • 4

数组中的数字 5 在整个数组中排第 4 (默认按升序的规则确认排名),可以看结果:
在这里插入图片描述
图片里面中间部分的数据中,两个 2.5 是数组中两个 1 的平均排名;最下面部分的数据中,两个 1 的排名就按其位置来确认,第一个 1 的排名为 2.0,第二个 1 的排名为 3.0。

  • DataFrame 类型中
    DataFrame.rank(axis=0, method=‘average’, ascending=True)
df = pd.DataFrame({'b':[4,7,-1,2], 'a':[0,1,0,1], 'c':[-3,6,9,-3]})
print(df, '\n')
print(df.rank(), '\n')    # 默认对每列进行排名
print(df.rank(axis=1))    # 进行每行的排名
  • 1
  • 2
  • 3
  • 4

结果:
在这里插入图片描述
method方法的选项:

method说明
average在相等分组中,为各个值分配平均排名 (默认)
min使用整个分组的最小排名
max使用整个分组的最大排名
first按值在原始数据中的出现顺序分配排名
dense类似 min,但是组之间的等级总是增加1

使用 min 就是整数部分不变,把小数点后面的数去除;使用 max 就是把小数点后面的数去除,进位给整数。


更多详情可以看官方文档:Pandas文档

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/204754
推荐阅读
相关标签
  

闽ICP备14008679号