pandas.Series.rank#
- Series.rank(axis=0, method='average', numeric_only=False, na_option='keep', ascending=True, pct=False)[源代码]#
沿指定轴计算数值数据的排名(1 到 n)。
默认情况下,相等的值被赋予平均排名。
- Parameters:
- axis{0 或 ‘index’, 1 或 ‘columns’}, default 0
用于直接排名的索引。对于 Series,此参数未使用,默认为 0。
- <strong>method</strong>{‘average’, ‘min’, ‘max’, ‘first’, ‘dense’}, default ‘average’
如何对具有相同值的记录组进行排名(即平局):
average: 组的平均排名
min: 组中的最低排名
max: 组中的最高排名
first: 根据它们在数组中出现的顺序分配排名
dense: 类似于 ‘min’,但组之间的排名始终增加 1。
- numeric_onlybool,默认 False
对于 DataFrame 对象,如果设置为 True,则仅对数值列进行排名。
在 2.0.0 版本发生变更:
numeric_only的默认值现在是False。- na_option{‘keep’, ‘top’, ‘bottom’}, default ‘keep’
如何对 NaN 值进行排名:
keep: 将 NaN 值分配给 NaN 排名
top: 将最低排名分配给 NaN 值
bottom: 将最高排名分配给 NaN 值
- ascendingbool, default True
元素是否应按升序排名。
- pctbool,默认 False
是否以百分比形式显示返回的排名。
- Returns:
- 与调用者相同的类型
返回一个 Series 或 DataFrame,其中数据排名作为值。
参见
core.groupby.DataFrameGroupBy.rank每个组内值的排名。
core.groupby.SeriesGroupBy.rank每个组内值的排名。
Examples
>>> df = pd.DataFrame(data={'Animal': ['cat', 'penguin', 'dog', ... 'spider', 'snake'], ... 'Number_legs': [4, 2, 4, 8, np.nan]}) >>> df Animal Number_legs 0 cat 4.0 1 penguin 2.0 2 dog 4.0 3 spider 8.0 4 snake NaN
平局被赋予该组排名 (默认) 的平均值。
>>> s = pd.Series(range(5), index=list("abcde")) >>> s["d"] = s["b"] >>> s.rank() a 1.0 b 2.5 c 4.0 d 2.5 e 5.0 dtype: float64
以下示例显示了该方法在上述参数下的行为:
default_rank: 这是不使用任何参数获得的默认行为。
max_rank: 设置
method = 'max',具有相同值的记录使用最高排名进行排名(例如:由于 ‘cat’ 和 ‘dog’ 都位于第 2 和第 3 位,因此分配了排名 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_rank 0 cat 4.0 2.5 3.0 2.5 0.625 1 penguin 2.0 1.0 1.0 1.0 0.250 2 dog 4.0 2.5 3.0 2.5 0.625 3 spider 8.0 4.0 4.0 4.0 1.000 4 snake NaN NaN NaN 5.0 NaN