Второй аргумент
scoreatpercentile
должен быть в пределах 0 и 100, поэтому я предполагаю, что для некоторых значений threshold
меньше -100 или больше 100.
Это потому, что математическое значение процентиля, что такое 200 процентиль? Возможное «решение» в этом случае состоит в том, чтобы сопоставить 100 всех значений над ним, вы можете сделать это следующим образом:
def get_perc(threshold):
perc = np.abs(threshold)
return 100 if perc>100 else perc
O = stats.scoreatpercentile(dfx[dfx['outlier'] == 1]['column_name'], get_perc(threshold))
l = stats.scoreatpercentile(dfx[dfx['outlier'] == 0]['column_name'], get_perc(threshold))
Data = stats.scoreatpercentile(dfx['column_name'], get_perc(threshold))
O, l, Data
Перед этим я бы рекомендовал прояснить понятие процентиля, а затем Вы сможете решить, является ли это хорошим решением для вас. Я нашел эту статью , которая объясняет это довольно просто, или вы можете проверить Википедия .