pandas.DataFrame.rank#

DataFrame.rank(ось=0, метод='average', numeric_only=False, na_option='keep', ascending=True, pct=False)[источник]#

Вычисление числовых рангов данных (от 1 до n) вдоль оси.

По умолчанию одинаковым значениям присваивается ранг, который является средним значением рангов этих значений.

Параметры:
ось{0 или 'index', 1 или 'columns'}, по умолчанию 0

Индекс для прямого ранжирования. Для Series этот параметр не используется и по умолчанию равен 0.

метод{'average', 'min', 'max', 'first', 'dense'}, по умолчанию 'average'

Как ранжировать группу записей, имеющих одинаковое значение (т.е. ничьи):

  • среднее: средний ранг группы

  • min: наименьший ранг в группе

  • max: наивысший ранг в группе

  • first: ранги назначаются в порядке их появления в массиве

  • dense: как 'min', но ранг всегда увеличивается на 1 между группами.

numeric_onlybool, по умолчанию False

Для объектов DataFrame rank сортирует только числовые столбцы, если установлено True.

Изменено в версии 2.0.0: Значение по умолчанию для numeric_only теперь False.

na_option{‘keep’, ‘top’, ‘bottom’}, по умолчанию ‘keep’

Как ранжировать значения NaN:

  • keep: присвоить NaN ранг значениям NaN

  • top: присвоить наименьший ранг значениям NaN

  • bottom: присвоить наивысший ранг значениям NaN

ascendingbool, по умолчанию True

Следует ли ранжировать элементы в порядке возрастания.

pctbool, по умолчанию False

Отображать ли возвращаемые ранги в процентильной форме.

Возвращает:
того же типа, что и вызывающий объект

Возвращает Series или DataFrame со значениями рангов данных.

Смотрите также

core.groupby.DataFrameGroupBy.rank

Ранг значений внутри каждой группы.

core.groupby.SeriesGroupBy.rank

Ранг значений внутри каждой группы.

Примеры

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