Метод quantile
Метод quantile применяется к объекту GroupBy
и вычисляет заданный квантиль для каждого столбца
в каждой группе. Первым параметром передаётся
значение квантиля от 0 до 1.
По умолчанию вычисляется квантиль 0.5 (медиана).
Синтаксис
groupby_object.quantile(q=0.5, interpolation='linear')
Параметр interpolation определяет способ
интерполяции, когда квантиль попадает между двумя точками.
Доступные значения: 'linear', 'lower',
'higher', 'nearest', 'midpoint'.
Пример
Вычислим медиану (квантиль 0.5) для каждой группы:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'A', 'B', 'B', 'C', 'C'],
'a': [1, 2, 3, 4, 5, 6],
'b': [10, 20, 30, 40, 50, 60]
})
res = df.groupby('group').quantile()
print(res)
Результат выполнения кода:
a b
group
A 1.5 15.0
B 3.5 35.0
C 5.5 55.0
Пример
Вычислим 25-й и 75-й процентили для группы:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'A', 'A', 'B', 'B', 'B'],
'a': [1, 2, 3, 4, 5, 6],
'b': [10, 20, 30, 40, 50, 60]
})
res = df.groupby('group').quantile(q=[0.25, 0.75])
print(res)
Результат выполнения кода:
a b
group
A 0.25 1.5 15.0
0.75 2.5 25.0
B 0.25 4.5 45.0
0.75 5.5 55.0
Пример
Используем разные методы интерполяции:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'A', 'A', 'A'],
'a': [1, 2, 3, 4]
})
res_linear = df.groupby('group').quantile(q=0.3)
res_lower = df.groupby('group').quantile(q=0.3, interpolation='lower')
res_higher = df.groupby('group').quantile(q=0.3, interpolation='higher')
print('linear:')
print(res_linear)
print('\nlower:')
print(res_lower)
print('\nhigher:')
print(res_higher)
Результат выполнения кода:
linear:
a
group
A 1.9
lower:
a
group
A 1
higher:
a
group
A 2