Как рассчитать межквартильный диапазон в Python


Межквартильный диапазон , часто обозначаемый как IQR, представляет собой способ измерения разброса средних 50% набора данных. Он рассчитывается как разница между первым квартилем* (25-й процентиль) и третьим квартилем (75-й процентиль) набора данных.

К счастью, в Python легко вычислить межквартильный диапазон набора данных с помощью функции numpy.percentile() .

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

Пример 1: межквартильный диапазон одного массива

В следующем коде показано, как вычислить межквартильный диапазон значений в одном массиве:

import numpy as np

#define array of data
data = np.array([14, 19, 20, 22, 24, 26, 27, 30, 30, 31, 36, 38, 44, 47])

#calculate interquartile range 
q3, q1 = np.percentile (data, [75 ,25])
iqr = q3 - q1

#display interquartile range 
iqr

12.25

Межквартильный диапазон этого набора данных оказывается равным 12,25.Это разброс средних 50% значений в этом наборе данных.

Пример 2. Межквартильный диапазон столбца фрейма данных

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

import numpy as np
import pandas as pd

#create data frame
df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
 'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
 'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#calculate interquartile range of values in the 'points' column
q75, q25 = np.percentile(df['points'], [75 ,25])
iqr = q75 - q25

#display interquartile range 
iqr

5.75

Межквартильный размах значений в столбце баллов оказывается равным 5,75 .

Пример 3: межквартильный диапазон нескольких столбцов фрейма данных

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

import numpy as np
import pandas as pd

#create data frame
df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
 'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
 'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

#define function to calculate interquartile range
def find_iqr(x):
 return np.subtract (\*np.percentile (x, [75, 25]))

#calculate IQR for 'rating' and 'points' columns
df[['rating', 'points']].apply (find_iqr)

rating 6.75
points 5.75
dtype: float64

#calculate IQR for all columns
df.apply (find_iqr)

rating 6.75
points 5.75
assists 2.50
rebounds 3.75
dtype: float64

Примечание. Мы используем функцию pandas.DataFrame.apply() для расчета IQR для нескольких столбцов в приведенном выше фрейме данных.

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

Влияют ли выбросы на межквартильный диапазон (IQR)?
Как рассчитать межквартильный диапазон (IQR) в Excel
Калькулятор межквартильного диапазона