Как заявил @SamProell, существуют различные соглашения для вычисления центилей, как вы можете видеть здесь с помощью методов вычисления квартиля (по-американски).Здесь у нас есть четное количество данных, поэтому давайте придерживаться первого метода и попробуем посмотреть, как мы будем делать это «вручную».
Сначала отсортируем данные:
> x2=np.sort(x)
> print(x2)
array([324, 324, 327, 328, 330, 334, 334, 336, 341, 342, 342, 344, 345,
346, 349, 349, 352, 353, 354, 354, 355, 355, 358, 359, 361, 361,
370, 374, 377, 386])
Затем разделите данные на две половины:
> x2_low = x2[:int(len(x2)/2)]
array([324, 324, 327, 328, 330, 334, 334, 336, 341, 342, 342, 344, 345,
346, 349])
> x2_up = x2[int(len(x2)/2):]
array([349, 352, 353, 354, 354, 355, 355, 358, 359, 361, 361, 370, 374,
377, 386])
Наконец найдите медиану (то есть значение, делающее ваши данные пополам).Здесь лежит выбор как len(x2_low)=15
.Можно сказать, что медиана x2_low - это его 8-е значение (индекс 7 в python), тогда:
> q = x2_low[int(len(x2_low)/2)]
336
> len(x2_low[x2_low<q])
7
> len(x2_low[x2_low>q])
7
это также то, что np.median(x2_low)
вернет, или даже q=np.percentile(x2,25,interpolation='lower')
.Но вы все равно получите:
> len(x[x<q])/len(x)
0.2333333333334
Поскольку ваше количество данных не кратно 4. Теперь все зависит от того, чего вы хотите достичь, вот результаты, которые вы можете получить для всех параметров интерполяции:
linear
: по умолчанию, вы получили его в своем вопросе
lower
: см. Выше
higher
:
> q=np.percentile(x,25,interpolation='higher')
341
> len(x[x>q])/len(x)
0.7
> len(x[x<q])/len(x)
0.26666666666666666
nearest
:
> q=np.percentile(x,25,interpolation='nearest')
336
> len(x[x>q])/len(x)
0.7333333333333333
> len(x[x<q])/len(x)
0.23333333333333334
и, наконец, midpoint
:
> q=np.percentile(x,25,interpolation='midpoint')
> len(x[x>q])/len(x)
0.7333333333333333
> len(x[x<q])/len(x)
0.26666666666666666
Все зависит от того, что вы хотите сделать с этим потом.Для получения дополнительной информации о различных методах расчета, проверьте документацию numpy .