Я использую панды, у меня есть набор данных с примерно 4 миллионами наблюдений. Мне было интересно, какой лучший/самый быстрый/самый эффективный способ выбрать 50 случайных элементов или первые 50 элементов для каждого класса (класс - это всего лишь столбец).Выбор n-элементов каждого класса
Уникальное количество классов в моем столбце около ~ 2k, и я хотел бы выбрать подмножество из 100 000 элементов, 50 элементов для каждого класса.
Я думал о том, чтобы сгруппировать их в класс, затем повторить каждую группу и выбрать первые 50 элементов, а затем перейти к следующей группе.
Мне было интересно, есть ли лучший способ сделать это?
Спасибо за ваш ответ, но когда у меня есть класс с числом наблюдений, который меньше моего указанного Samplesize, я не могу использовать это решение. Im, происходящее в ValueError: не может взять более крупный образец, чем население, когда «replace = False» – sebb
print df.groupby ('class', as_index = False) .apply (лямбда-массив: array.loc [np.random.choice (array.index) , Samplesize, True) ,:]) используйте этот, просто помните, что образец может иметь дубликаты, если он равен True – Shijo
@sebb Вы сказали, что хотите 50 элементов каждого класса. Если у класса есть менее 50 элементов, вы не можете этого сделать, поэтому повышение исключения выглядит правильно. – Goyo