Метод median
Метод median применяется к объекту GroupBy
и возвращает медиану значений для каждой группы.
Медиана - это среднее значение упорядоченного ряда,
которое делит его на две равные части.
Метод автоматически исключает пропущенные значения NaN
при вычислениях. Результатом является DataFrame
с группами в индексе и медианными значениями в столбцах.
Синтаксис
grouped.median(numeric_only=True)
Основные параметры метода:
-
numeric_only- логическое значение (по умолчаниюTrue), определяет, вычислять ли медиану только для числовых столбцов.
Пример
Рассмотрим базовый пример вычисления медианы для групп:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'A', 'B', 'B', 'A', 'B'],
'a': [1, 3, 5, 7, 9, 2],
'b': [10, 30, 50, 70, 90, 20]
})
grouped = df.groupby('group')
res = grouped.median()
print(res)
Результат выполнения кода:
a b
group
A 3.0 30.0
B 5.0 50.0
Пример
Используем параметр numeric_only для управления
обработкой нечисловых столбцов:
import pandas as pd
df = pd.DataFrame({
'group': ['X', 'X', 'Y', 'Y'],
'a': [1, 2, 3, 4],
'text': ['abc', 'def', 'ghi', 'jkl']
})
grouped = df.groupby('group')
res = grouped.median(numeric_only=True)
print(res)
Результат выполнения кода:
a
group
X 1.5
Y 3.5
Пример
Медиана устойчива к выбросам в отличие от среднего. Рассмотрим это на примере:
import pandas as pd
df = pd.DataFrame({
'group': ['A', 'A', 'A', 'A', 'A'],
'a': [1, 2, 3, 4, 100]
})
grouped = df.groupby('group')
mean_res = grouped.mean()
median_res = grouped.median()
print('Mean:')
print(mean_res)
print('\nMedian:')
print(median_res)
Результат выполнения кода:
Mean:
a
group
A 22.0
Median:
a
group
A 3.0
Пример
Вычисление медианы с группировкой по нескольким столбцам:
import pandas as pd
df = pd.DataFrame({
'cat1': ['A', 'A', 'B', 'B', 'A'],
'cat2': ['X', 'Y', 'X', 'Y', 'X'],
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
grouped = df.groupby(['cat1', 'cat2'])
res = grouped.median()
print(res)
Результат выполнения кода:
a b
cat1 cat2
A X 3.0 30.0
Y 2.0 20.0
B X 3.0 30.0
Y 4.0 40.0