Как найти медианное значение по группе в Pandas
Вы можете использовать следующий базовый синтаксис для вычисления медианного значения по группе в pandas:
df.groupby(['group_variable'])['value_variable']. median().reset_index()
Вы также можете использовать следующий синтаксис для вычисления медианного значения, сгруппированного по нескольким столбцам:
df.groupby(['group1', 'group2'])['value_variable']. median().reset_index()
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: найти медианное значение по одной группе
Предположим, у нас есть следующие Pandas DataFrames:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team position points rebounds 0 A G 5 11 1 A G 7 8 2 A F 7 10 3 A F 9 6 4 B G 12 6 5 B G 9 5 6 B F 9 9 7 B F 4 12
Мы можем использовать следующий код, чтобы найти среднее значение столбца «баллы», сгруппированное по командам:
#calculate median points by team df.groupby(['team'])['points']. median().reset_index() team points 0 A 7.0 1 B 9.0
Из вывода мы видим:
- Среднее количество очков, набранных игроками команды А, равно 7 .
- Среднее количество очков, набранных игроками команды Б, равно 9 .
Обратите внимание, что мы также можем найти медианное значение двух переменных одновременно:
#calculate median points and median rebounds by team df.groupby(['team'])[['points', 'rebounds']]. median () team points rebounds 0 A 7.0 9.0 1 B 9.0 7.5
Пример 2: найти медианное значение по нескольким группам
В следующем коде показано, как найти медианное значение столбца «очки», сгруппированного по команде и позиции:
#calculate median points by team df.groupby(['team', 'position'])['points']. median().reset_index() team position points 0 A F 8.0 1 A G 6.0 2 B F 6.5 3 B G 10.5
Из вывода мы видим:
- Среднее количество очков, набранных игроками на позиции «F» в команде А, равно 8 .
- Среднее количество очков, набранных игроками в позиции «G» в команде А, равно 6 .
- Среднее количество очков, набранных игроками на позиции «F» в команде B, составляет 6,5 .
- Среднее количество очков, набранных игроками на позиции «G» в команде B, составляет 10,5 .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные функции в pandas:
Функция median() модуля statistics в Python, медиана последовательности
Медиана (среднее значение) числовой последовательности
Синтаксис:
import statistics statistics.median(data)
Параметры:
- data — данные, последовательность или итерация.
Возвращаемое значение:
- медиану (среднее значение) числовой последовательности data .
Описание:
Функция median() модуля statistics возвращает медиану (среднее значение) числовой последовательности data , используя общий метод “среднее из двух средних”.
Аргумент данных data может быть последовательностью или итерацией. Если последовательность data пуста, то возникает ошибка StatisticsError .
Медиана это число, характеризующее выборку (например, набор чисел) и является надежным показателем центрального местоположения в последовательности и меньше зависит от наличия «всплесков» в элементах. В более общем случае медиану можно найти, упорядочив элементы выборки по возрастанию или убыванию и взяв средний элемент.
Когда количество элементов последовательности нечетное, то возвращается средний элемент данных:
>>> import statistics >>> statistics.median([1, 3, 5]) # 3
Когда количество элементов последовательности четное, то медиана интерполируется путем взятия среднего из двух средних значений:
>>> import statistics >>> statistics.median([1, 3, 5, 7]) # 4.0
Такой расчет подходит, когда данные дискретны и нет претензий к тому, что медиана может не соответствовать фактическому значению элемента последовательности.
Если данные являются порядковыми (поддерживает операции с порядком), но не числовыми (не поддерживает сложение), рассмотрите возможность использования функции statistics.median_low() или statistics.median_high() .
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Функция mean() и fmean() модуля statistics, среднее арифметическое
- Функция geometric_mean() модуля statistics, среднее геометрическое
- Функция harmonic_mean() модуля statistics, среднее гармоническое
- Функция median() модуля statistics, медиана последовательности
- Функция median_low() модуля statistics, наименьшее среднее значение
- Функция median_high() модуля statistics, наибольшее среднее значение
- Функция median_grouped() модуля statistics, медиана непрерывных данных
- Функция mode() модуля statistics, распространенный элемент
- Функция multimode() модуля statistics, часто встречающиеся элементы
- Функция pstdev() модуля statistics, стандартное отклонение
- Функция pvariance() модуля statistics, дисперсия элементов
- Функция stdev() модуля statistics, выборочное отклонение
- Функция variance() модуля statistics, выборочная дисперсия
- Функция quantiles() модуля statistics, интервалы равной вероятности
- Класс NormalDist() модуля statistics, распределение случайной величины
- Функция covariance() модуля statistics ковариация данных
- Функция correlation() модуля statistics, корреляция Пирсона
- Функция linear_regression() модуля statistics, линейная регрессия
Как рассчитать медиану в Pandas (с примерами)
Вы можете использовать функцию median() , чтобы найти медиану одного или нескольких столбцов в кадре данных pandas:
#find median value in specific column df['column1']. median () #find median value in several columns df[['column1', 'column2']]. median () #find median value in every numeric column df.median ()
В следующих примерах показано, как использовать эту функцию на практике со следующими пандами DataFrame:
#create DataFrame df = pd.DataFrame() #view DataFrame df player points assists rebounds 0 A 25 5 11 1 B NA 7 8 2 C 15 7 10 3 D 14 9 6 4 E 19 12 6 5 F 23 9 5 6 G 25 9 9 7 H 29 4 12
Пример 1: найти медиану одного столбца
В следующем коде показано, как найти медианное значение одного столбца в кадре данных pandas:
#find median value of *points* column df['points']. median () 23.0
Среднее значение в столбце очков равно 23 .
Обратите внимание, что по умолчанию функция median() игнорирует любые отсутствующие значения при вычислении медианы.
Пример 2: найти медиану нескольких столбцов
В следующем коде показано, как найти медианное значение нескольких столбцов в кадре данных pandas:
#find median value of *points* and *rebounds* columns df[['points', 'rebounds']]. median () points 23.0 rebounds 8.5 dtype: float64
Пример 3. Найдите медиану всех числовых столбцов
В следующем коде показано, как найти медианное значение всех числовых столбцов в кадре данных pandas:
#find median value of all numeric columns df.median () points 23.0 assists 8.0 rebounds 8.5 dtype: float64
pandas.DataFrame.median#
Return the median of the values over the requested axis.
Parameters : axis
Axis for the function to be applied on. For Series this parameter is unused and defaults to 0.
For DataFrames, specifying axis=None will apply the aggregation across both axes.
New in version 2.0.0.
skipna bool, default True
Exclude NA/null values when computing the result.
numeric_only bool, default False
Include only float, int, boolean columns. Not implemented for Series.
**kwargs
Additional keyword arguments to be passed to the function.
Returns : Series or scalar
>>> s = pd.Series([1, 2, 3]) >>> s.median() 2.0
With a DataFrame
>>> df = pd.DataFrame('a': [1, 2], 'b': [2, 3]>, index=['tiger', 'zebra']) >>> df a b tiger 1 2 zebra 2 3 >>> df.median() a 1.5 b 2.5 dtype: float64
>>> df.median(axis=1) tiger 1.5 zebra 2.5 dtype: float64
In this case, numeric_only should be set to True to avoid getting an error.
>>> df = pd.DataFrame('a': [1, 2], 'b': ['T', 'Z']>, . index=['tiger', 'zebra']) >>> df.median(numeric_only=True) a 1.5 dtype: float64