Как посчитать медиану в pandas
Перейти к содержимому

Как посчитать медиану в pandas

  • автор:

Как найти медианное значение по группе в 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:

Как рассчитать медиану в 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 (с примерами)

Скользящая медиана — это медиана определенного количества предыдущих периодов временного ряда.

Чтобы вычислить скользящую медиану для столбца в кадре данных pandas, мы можем использовать следующий синтаксис:

#calculate rolling median of previous 3 periods df['column_name']. rolling (3). median () 

В следующем примере показано, как использовать эту функцию на практике.

Пример: вычислить скользящую медиану колонны

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df month leads sales 0 1 13 22 1 2 15 24 2 3 16 23 3 4 15 27 4 5 17 26 5 6 20 26 6 7 22 27 7 8 24 30 8 9 25 33 9 10 26 32 10 11 23 27 11 12 24 25 

Мы можем использовать следующий синтаксис для создания нового столбца, содержащего скользящую медиану «продаж» за предыдущие 3 периода:

#calculate 3-month rolling median df['sales_rolling3'] = df['sales']. rolling (3). median () #view updated data frame df month leads sales sales_rolling3 0 1 13 22 NaN 1 2 15 24 NaN 2 3 16 23 23.0 3 4 15 27 24.0 4 5 17 26 26.0 5 6 20 26 26.0 6 7 22 27 26.0 7 8 24 30 27.0 8 9 25 33 30.0 9 10 26 32 32.0 10 11 23 27 32.0 11 12 24 25 27.0 

Мы можем вручную проверить, что скользящая медиана продаж, отображаемая для месяца 3, является медианой предыдущих 3 месяцев:

Точно так же мы можем проверить скользящую медиану продаж за 4-й месяц:

Мы можем использовать аналогичный синтаксис для вычисления скользящей 6-месячной медианы:

#calculate 6-month rolling median df['sales_rolling6'] = df['sales']. rolling (6). median () #view updated data frame df month leads sales sales_rolling3 sales_rolling6 0 1 13 22 NaN NaN 1 2 15 24 NaN NaN 2 3 16 23 23.0 NaN 3 4 15 27 24.0 NaN 4 5 17 26 26.0 NaN 5 6 20 26 26.0 25.0 6 7 22 27 26.0 26.0 7 8 24 30 27.0 26.5 8 9 25 33 30.0 27.0 9 10 26 32 32.0 28.5 10 11 23 27 32.0 28.5 11 12 24 25 27.0 28.5 

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

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 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *