开发手册 欢迎您!
软件开发者资料库

Python pandas.DataFrame.rank函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.rank方法的使用。

DataFrame.rank(self: ~FrameOrSeries, axis=0, method: str = 'average', numeric_only: Union[bool, NoneType] = None, na_option: str = 'keep', ascending: bool = True, pct: bool = False) → ~FrameOrSeries

计算沿轴的数值数据等级(1到n)。

默认情况下,为相等的值分配一个等级,该等级是这些值的等级的平均值。

参数:

axis:{0'index'1'columns'},默认0

直接排名的索引。

method{'average','min','max','first','dense'}

默认为'average'

如何对具有相同值(即ties)的记录组进行排名:

1) average:组的平均等级

2) min:组中最低的排名

3) max:组中最高等级

4) first : 按排列顺序排列,依次排列

5) dense:类似于 ‘min’,但组之间的排名始终提高1

numeric_onlybool, 可选

对于DataFrame对象,如果设置为True,

则仅对数字列进行排名。

na_option{'keep','top','bottom'}

默认为'keep'

如何对NaN值进行排名:

1) keep:将NaN等级分配给NaN值

2) top:如果升序,则将最小等级分配给NaN值

3) bottom:如果升序,则将最高等级分配给NaN值。

ascendingbool,默认为True

元素是否应该按升序排列。

pct:bool,默认为False

是否以百分比形式显示返回的排名。

返回值:

与调用者相同的类型

返回以数据等级作为值的SeriesDataFrame

例子

>>> df = pd.DataFrame(data={'Animal': ['cat', 'penguin', 'dog',...                                    'spider', 'snake'],...                         'Number_legs': [4, 2, 4, 8, np.nan]})>>> df    Animal  Number_legs0      cat          4.01  penguin          2.02      dog          4.03   spider          8.04    snake          NaN

以下示例显示了使用上述参数的方法的行为:

  • default_rank:这是不使用任何参数而获得的默认行为。
  • max_rank:设置method = 'max'具有相同值的记录将使用最高排名进行排名(例如:由于'cat''dog'都位于第二和第三位置,因此分配了rank 3。)
  • NA_bottom:选择na_option = 'bottom',如果存在具有NaN值的记录,则将它们放在排名的底部。
  • pct_rank:设置pct = True时,排名以百分等级表示。

>>> df['default_rank'] = df['Number_legs'].rank()>>> df['max_rank'] = df['Number_legs'].rank(method='max')>>> df['NA_bottom'] = df['Number_legs'].rank(na_option='bottom')>>> df['pct_rank'] = df['Number_legs'].rank(pct=True)>>> df    Animal  Number_legs  default_rank  max_rank  NA_bottom  pct_rank0      cat          4.0           2.5       3.0        2.5     0.6251  penguin          2.0           1.0       1.0        1.0     0.2502      dog          4.0           2.5       3.0        2.5     0.6253   spider          8.0           4.0       4.0        4.0     1.0004    snake          NaN           NaN       NaN        5.0       NaN