Pandas的排序、排名方法 您所在的位置:网站首页 参考内容补充排序的方法有哪些 Pandas的排序、排名方法

Pandas的排序、排名方法

2024-06-29 15:02| 来源: 网络整理| 查看: 265

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

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

print(df.sort_index(ascending=False))

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

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

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

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

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

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

排名: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")) # 若有相同的数,根据值在数组中出现的顺序进行排名

数组中的数字 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)) # 进行每行的排名

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

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

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

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有