Я работаю с данными, который выглядит как DataFrame описываемогоУстановленное значение 90-го процентиля для каждого столбца в DataFrame
df = pd.DataFrame({'AAA': [1,1,1,2,2,2,3,3], 'BBB': [2,1,3,4,6,1,2,3]})
То, что я хотел бы сделать, это установить значение сводке (90%) если значение превышает 90-й процентиль. Так что это как ограничение максимального уровня до 90-го процентиля.
Это становится сложнее для меня, так как каждый столбец будет иметь разные процентильные значения.
Я могу получить 90-й процентиль значение с помощью:
df.describe(percentiles=[.9])
Так что для столбца ВВВ, 6 больше, чем 4,60 (90-й процентиль), следовательно, он должен быть изменен на 5 (облаву 4.60).
В моей реальной проблеме я делаю это для большой матрицы, поэтому я хотел бы знать, есть ли какое-либо простое решение для этого, вместо того, чтобы сначала создать массив из 90-го процентиля столбцов, а затем проверить элементы для столбцы и установив их для округления до 90-го процентиля.
Не знаете, почему, но вы заметили, что в опубликованных тестах этот метод выглядит медленнее, чем применяемый метод. +1 для более чистого однострочного. – Zero
Кажется, что 'np.percentile' довольно немного быстрее (целых 3x), чем' df.quantile' - возможно, потому что последний возвращает серию. –
только для более короткой версии, принято это как ответ, иначе для меня как работает, так и спасибо. – Yantraguru