DataFrame.rank() / Series.rank()
Метод rank() присваивает каждому элементу его ранг в выборке. По умолчанию — средний ранг для одинаковых значений.
Сигнатура
DataFrame.rank(axis=0, method="average", numeric_only=False,
na_option="keep", ascending=True, pct=False)
Параметры
method— способ разрешения связей:"average","min","max","first","dense".ascending— по возрастанию (True) или убыванию.pct— вернуть ранги в долях (0..1).na_option— что делать сNaN:"keep","top","bottom".
Возвращаемое значение
Series или DataFrame с рангами того же размера.
Примеры
Пример 1. Базовое ранжирование
import pandas as pd
s = pd.Series([10, 30, 20, 40])
print(s.rank())
0 1.0
1 3.0
2 2.0
3 4.0
dtype: float64
Пример 2. Связи: method=»min» vs «dense»
import pandas as pd
s = pd.Series([10, 20, 20, 30])
print("min:")
print(s.rank(method="min"))
print("dense:")
print(s.rank(method="dense"))
min:
0 1.0
1 2.0
2 2.0
3 4.0
dtype: float64
dense:
0 1.0
1 2.0
2 2.0
3 3.0
dtype: float64
Пример 3. Рейтинг роботов по очкам
import pandas as pd
df = pd.DataFrame({
"robot": ["P1", "P2", "P3", "P4"],
"score": [80, 95, 70, 85],
})
df["rank"] = df["score"].rank(ascending=False, method="min").astype(int)
print(df)
robot score rank
0 P1 80 3
1 P2 95 1
2 P3 70 4
3 P4 85 2
Пример 4. Процентильные ранги
import pandas as pd
s = pd.Series([10, 20, 30, 40, 50])
print(s.rank(pct=True))
0 0.2
1 0.4
2 0.6
3 0.8
4 1.0
dtype: float64
Пример 5. Ранги по столбцам DataFrame
import pandas as pd
df = pd.DataFrame({"a": [3, 1, 2], "b": [10, 30, 20]})
print(df.rank())
a b
0 3.0 1.0
1 1.0 3.0
2 2.0 2.0
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.