本文主要介绍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() 123
Out[110]: d 0 a 1 b 2 c 3 dtype: int64 Out[110]: a 1 b 2 c 3 d 0 dtype: int64 123456789101112
对于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) 123456
降序排列:
frame.sort_index(axis=1,ascending=False) 1
(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() 123
Out[114]: 0 4 1 7 2 -3 3 2 dtype: int64 Out[114]: 2 -3 3 2 0 4 1 7 dtype: int64 12345678910111213
特别的,在排序时,任何缺失值默认都会被放到Series的末尾:
obj = pd.Series([4,np.nan,7,np.nan,-3,2]) obj obj.sort_values() 123
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
12345678910111213141516在DataFrame中,可以将一个或多个列的名字传递给sort_values的by选项,来实现对一个或多个列中的值进行排序。
## 单个排序结果 frame = pd.DataFrame({'b':[4,-3,-3,2], 'a':[0,1,0,1]}) frame frame.sort_values(by='b') 1234
要根据多个列进行排序,传入名称的列表即可:
frame.sort_index(by=['a','b']) 1
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
12345678910111213141516171819202122232425262728这里,条目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 1234567891011
另,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') 1234
参考文献:
【1】利用Python进行数据分析(第2版)https://www.jianshu.com/p/161364dd0acf;
作者简介
作者:榆尚天
简介:一个数据分析的爱好者,立志成为一名数据界的幽灵。
微信平台:数据幽灵
期待与各位同道的交流,欢迎关注~~~
————————————————————————————
作者:榆尚天
出处:https://mp.csdn.net/mdeditor/90265032
说明:本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
相关知识
python利用c4.5决策树对鸢尾花卉数据集进行分类(iris)
使用Python一步一步地来进行数据分析总结
科学网—为什么生态学家要学习Python或者R?
【python机器学习】KNN算法实现回归(基于鸢尾花数据集)
排序2
深度学习花卉识别:Python数据集解析
如何在Python中使用Pandas库进行季节性调整?
Python实现NIKE耐克女REACT跑步鞋数据分析和可视化
基于python编程的五种鲜花识别
python数据分析与展示
网址: Python进行数据的排序和排名 https://m.huajiangbk.com/newsview545944.html
上一篇: 鸢尾花数据集的数据可视化 |
下一篇: 数据分析师的书单 |