РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
378 of 687 menu

Метод rank

Метод rank применяется к объекту GroupBy и возвращает ранги элементов внутри каждой группы. Ранжирование выполняется независимо для каждой группы, что позволяет сравнивать позиции элементов внутри группировки. Метод поддерживает различные методы ранжирования, способы обработки пропущенных значений и параметры сортировки. Основное назначение - присвоение порядковых номеров элементам на основе их значений внутри группы.

Синтаксис

df.groupby(by).rank( method='average', ascending=True, na_option='keep', pct=False, numeric_only=False )

Основные параметры метода:

  • method - способ ранжирования. Возможные значения: 'average', 'min', 'max', 'first', 'dense'. По умолчанию 'average' - средний ранг для одинаковых значений.
  • ascending - определяет порядок ранжирования. Если True, то наименьшему значению присваивается ранг 1. Если False, то наибольшему значению присваивается ранг 1. По умолчанию True.
  • na_option - способ обработки пропущенных значений. Возможные значения: 'keep', 'top', 'bottom'. По умолчанию 'keep' - пропуски сохраняются как NaN.
  • pct - если True, возвращает процентили (ранги, нормированные от 0 до 1). По умолчанию False.
  • numeric_only - если True, применяет ранжирование только к числовым столбцам. По умолчанию False.

Пример

Давайте создадим таблицу с группами и вычислим ранги внутри каждой группы со стандартным методом 'average':

import pandas as pd df = pd.DataFrame({ 'group': ['A', 'A', 'A', 'B', 'B', 'B'], 'value': [10, 20, 10, 30, 20, 30] }) df['rank'] = df.groupby('group')['value'].rank() print(df)

Результат выполнения кода:

group value rank 0 A 10 1.5 1 A 20 3.0 2 A 10 1.5 3 B 30 2.5 4 B 20 1.0 5 B 30 2.5

Пример

Теперь вычислим ранги с методом 'min', который присваивает минимальный ранг для всех одинаковых значений:

import pandas as pd df = pd.DataFrame({ 'group': ['A', 'A', 'A', 'B', 'B', 'B'], 'value': [10, 20, 10, 30, 20, 30] }) df['rank'] = df.groupby('group')['value'].rank(method='min') print(df)

Результат выполнения кода:

group value rank 0 A 10 1.0 1 A 20 3.0 2 A 10 1.0 3 B 30 2.0 4 B 20 1.0 5 B 30 2.0

Пример

Используем метод 'dense', который присваивает ранги без пропусков между группами одинаковых значений:

import pandas as pd df = pd.DataFrame({ 'group': ['A', 'A', 'A', 'B', 'B', 'B'], 'value': [10, 20, 10, 30, 20, 30] }) df['rank'] = df.groupby('group')['value'].rank(method='dense') print(df)

Результат выполнения кода:

group value rank 0 A 10 1.0 1 A 20 2.0 2 A 10 1.0 3 B 30 2.0 4 B 20 1.0 5 B 30 2.0

Пример

Изменим порядок ранжирования на убывающий, чтобы наибольшее значение получало ранг 1:

import pandas as pd df = pd.DataFrame({ 'group': ['A', 'A', 'A', 'B', 'B', 'B'], 'value': [10, 20, 10, 30, 20, 30] }) df['rank'] = df.groupby('group')['value'].rank(ascending=False) print(df)

Результат выполнения кода:

group value rank 0 A 10 2.5 1 A 20 1.0 2 A 10 2.5 3 B 30 1.5 4 B 20 3.0 5 B 30 1.5

Пример

Вычислим процентили (нормированные ранги от 0 до 1) внутри каждой группы:

import pandas as pd df = pd.DataFrame({ 'group': ['A', 'A', 'A', 'B', 'B', 'B'], 'value': [10, 20, 10, 30, 20, 30] }) df['pct_rank'] = df.groupby('group')['value'].rank(pct=True) print(df)

Результат выполнения кода:

group value pct_rank 0 A 10 0.50 1 A 20 1.00 2 A 10 0.50 3 B 30 0.75 4 B 20 0.25 5 B 30 0.75

Пример

Применим ранжирование к нескольким столбцам таблицы одновременно:

import pandas as pd df = pd.DataFrame({ 'group': ['A', 'A', 'A', 'B', 'B', 'B'], 'x': [5, 8, 5, 9, 6, 9], 'y': [10, 20, 10, 30, 20, 30] }) ranks = df.groupby('group').rank() print(ranks)

Результат выполнения кода:

x y 0 1.5 1.5 1 3.0 3.0 2 1.5 1.5 3 2.5 2.5 4 1.0 1.0 5 2.5 2.5

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

  • метод rank,
    который вычисляет ранги элементов внутри групп
  • метод transform,
    который применяет функцию к каждой группе и возвращает результат с исходной формой
  • метод cumcount,
    который нумерует элементы внутри групп от 0 до n-1
  • метод groupby,
    который создаёт объект для группировки данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить