Python进行数据的排序和排名

本文主要介绍Python中使用pandas进行排序和排名操作,相关如下:
排序:
对数据集按照某一种方式进行排序(升序、降序或自定义顺序)。
排名:
对数据集按照某一种方式进行排名(从高到低、从低到高或自定义顺序排名),一般生成新的名次序号列。

1. 排序

  • (1)sort_index():按索引排序

简介:
sort_index(axis=1,ascending=False)
axis:行索引或列索引,默认为列索引排序,axis = 1 表示对行进行排序;
ascending:排序方式,默认升序,ascending=False 表示降序;

使用方法如下:

obj = pd.Series(range(4),index=['d','a','b','c'])
obj
obj.sort_index()
Out[110]:
d    0
a    1
b    2
c    3
dtype: int64
Out[110]:
a    1
b    2
c    3
d    0
dtype: int64

对于DataFrame,则可以根据任意一个轴上的索引进行排序:

frame = pd.DataFrame(np.arange(8).reshape(2,4),
                    index=['three','one'],
                    columns=['d','a','b','c'])
frame
frame.sort_index()
frame.sort_index(axis=1)

Python进行数据的排序和排名_第1张图片
降序排列:

frame.sort_index(axis=1,ascending=False)

在这里插入图片描述

  • (2)sort_values():按数值排序

简介:
sort_values(by=‘b’,ascending=False)
by:排序的依据,by=‘b’ 表示依据b列的数据进行排序;
ascending:排序方式,默认升序,ascending=False 表示降序;

使用方法如下:

obj = pd.Series([4,7,-3,2])
obj
obj.sort_values()

Out[114]:
0    4
1    7
2   -3
3    2
dtype: int64
Out[114]:
2   -3
3    2
0    4
1    7
dtype: int64

特别的,在排序时,任何缺失值默认都会被放到Series的末尾:

obj = pd.Series([4,np.nan,7,np.nan,-3,2])
obj
obj.sort_values()
Out[115]:
0    4.0
1    NaN
2    7.0
3    NaN
4   -3.0
5    2.0
dtype: float64
Out[115]:
4   -3.0
5    2.0
0    4.0
2    7.0
1    NaN
3    NaN
dtype: float64

在DataFrame中,可以将一个或多个列的名字传递给sort_values的by选项,来实现对一个或多个列中的值进行排序。

## 单个排序结果
frame = pd.DataFrame({'b':[4,-3,-3,2], 'a':[0,1,0,1]})
frame
frame.sort_values(by='b')

Python进行数据的排序和排名_第2张图片
要根据多个列进行排序,传入名称的列表即可:

frame.sort_index(by=['a','b'])

Python进行数据的排序和排名_第3张图片

2. 排名

rank():对数据进行排名
简介:
df.rank(ascending=False, method=‘max’)
ascending:排名方式,默认从低到高,ascending=False 表示从高到低;
method:排名方式,包括:“average”、“min”、“max”、“first”、“dense”。默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的,对照表如下:
Python进行数据的排序和排名_第4张图片
使用方法

排名会从1开始一直到数组中有效数据的数量。

obj = pd.Series([7,-5,7,4,2,0,4])
# 输出排名序号
obj.rank()


Out[123]:
0    6.5
1    1.0
2    6.5
3    4.5
4    3.0
5    2.0
6    4.5
dtype: float64

## 也可以根据值在原数据中出现的顺序给出排名:
obj.rank(method='first')


Out[124]:
0    6.0
1    1.0
2    7.0
3    4.0
4    3.0
5    2.0
6    5.0
dtype: float64

这里,条目0和2没有使用平均排名6.5,它们被设成了6和7,因为数据中标签0位于标签2的前面。

你也可以按降序进行排名:

obj.rank(ascending=False, method='max')

Out[125]:
0    2.0
1    7.0
2    2.0
3    4.0
4    5.0
5    6.0
6    4.0
dtype: float64

另,DataFrame可以在行或列上计算排名:

frame = pd.DataFrame({'b': [4.3, 7, -3, 2], 'a': [0, 1, 0, 1],
                      'c': [-2, 5, 8, -2.5]})
frame
frame.rank(axis='columns')

Python进行数据的排序和排名_第5张图片
参考文献:
【1】利用Python进行数据分析(第2版)https://www.jianshu.com/p/161364dd0acf;

作者简介
作者:榆尚天
简介:一个数据分析的爱好者,立志成为一名数据界的幽灵。
微信平台:数据幽灵
Python进行数据的排序和排名_第6张图片
期待与各位同道的交流,欢迎关注~~~
————————————————————————————
作者:榆尚天
出处:https://mp.csdn.net/mdeditor/90265032
说明:本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

你可能感兴趣的:(python数据分析)