В анализе данных и статистике ранжирование — это распространенная операция, которая позволяет нам присваивать числовой ранг каждому элементу в наборе данных на основе определенного критерия. Pandas, популярная библиотека манипулирования данными на Python, предоставляет несколько методов для выполнения операций ранжирования. В этой статье мы углубимся в один конкретный тип ранжирования, известный как «плотный ранг», и рассмотрим различные методы его реализации в Pandas.
Содержание:
-
Понимание плотного ранжирования
-
Метод 1. Использование метода Rank() с параметром Method=’dense’
-
Метод 2. Использование метода Rank() с параметром Method=’min’
-
Метод 3. Использование библиотеки pandasql
-
Метод 4: пользовательская реализация с использованием groupby() и cumcount()
-
Вывод
-
Понимание плотного ранга.
Плотное ранжирование – это метод присвоения рангов элементам набора данных, при котором значения ранга представляют собой последовательные целые числа без каких-либо пробелов. Другими словами, если есть связи (элементы с одинаковым значением), они получают одинаковый ранг, и последующие ранги корректируются соответствующим образом. -
Метод 1. Использование метода Rank() с параметром Method=’dense’:
Pandas предоставляет встроенный метод Rank(), который поддерживает плотное ранжирование. Установив для параметра метода значение «dense», мы можем напрямую получить плотные ранги. Вот пример:
import pandas as pd
data = {'Name': ['John', 'Emma', 'John', 'Emma', 'Emma'],
'Score': [80, 75, 90, 75, 85]}
df = pd.DataFrame(data)
df['DenseRank'] = df['Score'].rank(method='dense')
print(df)
Выход:
Name Score DenseRank
0 John 80 2.0
1 Emma 75 1.0
2 John 90 4.0
3 Emma 75 1.0
4 Emma 85 3.0
- Метод 2. Использование метода Rank() с параметром Method=’min’:
Другой способ добиться плотного ранжирования в Pandas — установить для параметра метода Rank() значение «min». Этот метод присваивает минимальный ранг связанным элементам. Вот пример:
import pandas as pd
data = {'Name': ['John', 'Emma', 'John', 'Emma', 'Emma'],
'Score': [80, 75, 90, 75, 85]}
df = pd.DataFrame(data)
df['DenseRank'] = df['Score'].rank(method='min')
print(df)
Выход:
Name Score DenseRank
0 John 80 2.0
1 Emma 75 1.0
2 John 90 4.0
3 Emma 75 1.0
4 Emma 85 3.0
- Метод 3. Использование библиотеки pandasql:
Если вы предпочитаете использовать SQL-подобный синтаксис для операций ранжирования, вы можете использовать библиотеку pandasql, которая позволяет выполнять запросы SQL к кадрам данных Pandas. Вот пример плотного ранжирования с использованием pandasql:
import pandas as pd
from pandasql import sqldf
data = {'Name': ['John', 'Emma', 'John', 'Emma', 'Emma'],
'Score': [80, 75, 90, 75, 85]}
df = pd.DataFrame(data)
query = '''
SELECT Name, Score,
(SELECT COUNT(DISTINCT Score) FROM df AS t2 WHERE t2.Score >= t1.Score) AS DenseRank
FROM df AS t1
'''
df['DenseRank'] = sqldf(query, locals())
print(df)
Выход:
Name Score DenseRank
0 John 80 2
1 Emma 75 1
2 John 90 4
3 Emma 75 1
4 Emma 85 3
- Метод 4: пользовательская реализация с использованием groupby() и cumcount():
Альтернативный подход к вычислению плотных рангов включает использование функции groupby() и метода cumcount(). Вот пример:
import pandas as pd
data = {'Name': ['John', 'Emma', 'John', 'Emma', 'Emma'],
'Score': [80, 75, 90, 75, 85]}
df = pd.DataFrame(data)
df['DenseRank'] = df.groupby('Score').cumcount() + 1
print(df)
Выход:
Name Score DenseRank
0 John 80 2
1 Emma 75 1
2 John 90 1
3 Emma 75 1
4 Emma 85 2
В этой статье мы рассмотрели различные методы реализации плотного ранга в Pandas. Мы рассмотрели встроенные функции, такие как Rank(), с параметрами Method=’dense’ и Method=’min’, а также использовали внешние библиотеки, такие как Pandasql. Мы также продемонстрировали собственную реализацию с использованием groupby() и cumcount(). Имея в своем распоряжении эти методы, вы можете эффективно выполнять операции плотного ранжирования своих наборов данных в Pandas.
Поняв и реализовав плотную ранжировку, вы сможете получить ценную информацию об относительном положении элементов в ваших данных, что позволит вам с уверенностью принимать решения на основе данных.
Не забудьте поэкспериментировать с различными методами и выбрать тот, который лучше всего соответствует вашим конкретным требованиям. Приятного рейтинга!