В статистике децили — это числа, которые разбивают набор данных на десять групп с одинаковой частотой.
Первый дециль — это точка, ниже которой лежат 10% всех значений данных. Второй дециль — это точка, ниже которой лежат 20% всех значений данных, и так далее.
Мы можем использовать следующий синтаксис для вычисления децилей для набора данных в Python:
import numpy as np
np.percentile (var, np.arange (0, 100, 10))
В следующем примере показано, как использовать эту функцию на практике.
Пример: вычисление децилей в Python
В следующем коде показано, как создать поддельный набор данных с 20 значениями, а затем вычислить значения для децилей набора данных:
import numpy as np
#create data
data = np.array([56, 58, 64, 67, 68, 73, 78, 83, 84, 88,
89, 90, 91, 92, 93, 93, 94, 95, 97, 99])
#calculate deciles of data
np.percentile (data, np.arange (0, 100, 10))
array([56. , 63.4, 67.8, 76.5, 83.6, 88.5, 90.4, 92.3, 93.2, 95.2])
Способ интерпретации децилей следующий:
- 10% всех значений данных лежат ниже 63,4 .
- 20% всех значений данных лежат ниже 67,8 .
- 30% всех значений данных лежат ниже 76,5 .
- 40% всех значений данных лежат ниже 83,6 .
- 50% всех значений данных лежат ниже 88,5 .
- 60% всех значений данных лежат ниже 90,4 .
- 70% всех значений данных лежат ниже 92,3 .
- 80% всех значений данных лежат ниже 93,2 .
- 90% всех значений данных лежат ниже 95,2 .
Обратите внимание, что первое значение в выводе (56) просто обозначает минимальное значение в наборе данных.
Пример: размещение значений в децилях в Python
Чтобы поместить каждое значение данных в дециль, мы можем использовать функцию qcut pandas.
Вот как использовать эту функцию для набора данных, который мы создали в предыдущем примере:
import pandas as pd
#create data frame
df = pd.DataFrame({'values': [56, 58, 64, 67, 68, 73, 78, 83, 84, 88,
89, 90, 91, 92, 93, 93, 94, 95, 97, 99]})
#calculate decile of each value in data frame
df['Decile'] = pd.qcut(df['values'], 10, labels= False )
#display data frame
df
values Decile
0 56 0
1 58 0
2 64 1
3 67 1
4 68 2
5 73 2
6 78 3
7 83 3
8 84 4
9 88 4
10 89 5
11 90 5
12 91 6
13 92 6
14 93 7
15 93 7
16 94 8
17 95 8
18 97 9
19 99 9
Способ интерпретации вывода следующий:
- Значение данных 56 находится между процентилем 0% и 10%, таким образом, оно попадает в дециль 0 .
- Значение данных 58 находится между процентилем 0% и 10%, таким образом, оно попадает в дециль 0 .
- Значение данных 64 находится между процентилями 10% и 20%, таким образом, оно попадает в дециль 1 ..
- Значение данных 67 находится между процентилями 10% и 20%, таким образом, оно попадает в дециль 1 .
- Значение данных 68 находится между процентилями 20% и 30%, таким образом, оно попадает в дециль 2 .
И так далее.
Дополнительные ресурсы
Как рассчитать процентили в Python
Как рассчитать межквартильный диапазон в Python