Рассмотрим следующие данные:
s = pd.Series([1, 1, 1, 2])
pd.qcut(s, 2, labels=False)
Я бы хотел получить равновероятные группы, то есть [0, 0, 1, 1]
. Вместо этого qcut
может вызвать исключение или вернуть [0, 0, 0, 0]
(в зависимости от дубликата kwarg).
Я получил равновероятные группы, слегка повредив данные, то есть:
def my_qcut(s, *args, **kwargs):
disturbed = np.array(s) + np.random.rand(len(s)) / 1000
return pd.qcut(disturbed, *args, **kwargs)
Хотя это, кажется, работает, я чувствую, что это слишком глупо. Кто-нибудь может посоветовать мне детерминированный способ расщепления на равновероятные группы?