Python进行数据的排序和排名

您所在的位置:网站首页 python升序排列3个数字 Python进行数据的排序和排名

Python进行数据的排序和排名

2023-10-30 13:12| 来源: 网络整理| 查看: 265

本文主要介绍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)

在这里插入图片描述 降序排列:

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')

在这里插入图片描述 要根据多个列进行排序,传入名称的列表即可:

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

在这里插入图片描述

2. 排名

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

排名会从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')

在这里插入图片描述 参考文献: 【1】利用Python进行数据分析(第2版)https://www.jianshu.com/p/161364dd0acf;

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3