Метод ранжирования DataFrame в Pandas

Beginner

Введение

В этом практическом занятии (лабораторной работе) вы научитесь использовать метод DataFrame.rank() в Pandas для присвоения рангов данным в DataFrame. Метод rank() назначает числовой ранг от 1 до n вдоль указанной оси, которая может быть либо осью индексов, либо осью столбцов. Это позволяет определить ранги значений в DataFrame на основе определенного столбца.

Советы по виртуальной машине (VM)

После запуска виртуальной машины нажмите в левом верхнем углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если у вас возникнут проблемы во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Создание DataFrame и присвоение рангов столбцу

Сначала создадим DataFrame и используем метод rank() для присвоения рангов одному из столбцов в DataFrame. В этом примере мы присвоим ранги столбцу 'Profit' в порядке возрастания.

## Import the pandas library
import pandas as pd

## Create a DataFrame
df = pd.DataFrame({
    'Product_Id': [1001, 1002, 1003, 1004],
    'Product_Name': ['Coffee powder', 'Black pepper', 'rosemary', 'Cardamom'],
    'customer_Name': ['Navya', 'Vindya', 'pooja', 'Sinchana'],
    'ordered_Date': ['16-3-2021', '17-3-2021', '18-3-2021', '18-3-2021'],
    'ship_Date': ['18-3-2021', '19-3-2021', '20-3-2021', '20-3-2021'],
    'Profit': [750, 652.14, 753.8, 900.12]
})

## Use the rank() method to assign ranks to the 'Profit' column
df['ranked_profit'] = df['Profit'].rank()

## Display the DataFrame
df

Присвоение рангов столбцу в порядке убывания

Далее, изменим пример из шага 1, установив параметр ascending в значение False. Это позволит присвоить ранги столбцу в порядке убывания.

## Import the pandas library
import pandas as pd

## Create a DataFrame
df = pd.DataFrame({
    'Product_Id': [1001, 1002, 1003, 1004],
    'Product_Name': ['Coffee powder', 'Black pepper', 'rosemary', 'Cardamom'],
    'customer_Name': ['Navya', 'Vindya', 'pooja', 'Sinchana'],
    'ordered_Date': ['16-3-2021', '17-3-2021', '18-3-2021', '18-3-2021'],
    'ship_Date': ['18-3-2021', '19-3-2021', '20-3-2021', '20-3-2021'],
    'Profit': [750, 652.14, 753.8, 900.12]
})

## Use the rank() method to assign ranks to the 'Profit' column in descending order
df['ranked_profit'] = df['Profit'].rank(ascending=False)

## Display the DataFrame
df

Присвоение рангов столбцу разными методами

Если DataFrame содержит дубликаты значений, вы можете использовать различные методы для присвоения рангов столбцу.

  • Метод 'average' присваивает средний ранг дубликатным значениям.
  • Метод 'min' присваивает наименьший ранг дубликатным значениям.
  • Метод 'max' присваивает наибольший ранг дубликатным значениям.
  • Метод 'first' присваивает ранги в порядке, в котором значения появляются в DataFrame.
  • Метод 'dense' похож на 'min', но ранг всегда увеличивается на 1 между группами.
## Import the pandas library
import pandas as pd

## Create a DataFrame
df = pd.DataFrame({
    'column_1': [1, 3, 3, 4, 7],
    'column_2': [1, 2, 3, 4, 5]
})

## Use the rank() method with different methods
df['average_rank'] = df['column_1'].rank(method='average')
df['min_rank'] = df['column_1'].rank(method='min')
df['max_rank'] = df['column_1'].rank(method='max')
df['first_rank'] = df['column_1'].rank(method='first')
df['dense_rank'] = df['column_1'].rank(method='dense')

## Display the DataFrame
df

Присвоение рангов столбцу с нулевыми значениями

Если DataFrame содержит пропущенные значения (NaN), вы можете использовать параметр na_option, чтобы указать, как должны быть ранжированы пропущенные значения.

  • Если na_option установлен в 'keep', пропущенным значениям будут присвоены ранги NaN.
  • Если na_option установлен в 'top', пропущенным значениям будут присвоены наименьшие ранги.
  • Если na_option установлен в 'bottom' и ascending=True, пропущенным значениям будут присвоены наибольшие ранги.
## Import the pandas library
import pandas as pd
import numpy as np

## Create a DataFrame with null values
df = pd.DataFrame({
    'column_1': [1, 3, np.nan, 4, np.nan],
    'column_2': [1, 2, 3, np.nan, np.nan]
})

## Use the rank() method with different na_option parameters
df['keep_rank_Nan'] = df['column_2'].rank(na_option='keep')
df['Top_rank_Nan'] = df['column_2'].rank(na_option='top')
df['Bottom_rank_Nan'] = df['column_1'].rank(na_option='bottom')

## Display the DataFrame
df

Резюме

В этом практическом занятии вы узнали, как использовать метод DataFrame.rank() в библиотеке Pandas для присвоения рангов данным в DataFrame. Вы можете указать различные параметры, такие как ось (axis), метод (method), numeric_only, na_option, ascending и pct, чтобы настроить процесс ранжирования. Метод rank() полезен для определения позиции значений в столбце и сортировки данных на основе рангов.