У меня есть фрейм данных pd
с двумя столбцами, X
и y
.
В pd[y]
у меня есть целые числа от 1
до 10
включительно. Однако они имеют разные частоты:
df[y].value_counts()
10 6645
9 6213
8 5789
7 4643
6 2532
5 1839
4 1596
3 878
2 815
1 642
Я хочу урезать свой фрейм данных, чтобы для каждой метки было одинаковое количество вхождений. Поскольку я хочу равное количество каждой метки, минимальная частота составляет 642
. Поэтому я хочу сохранить только 642
случайно выбранных строк каждой метки класса в моем фрейме данных, чтобы мой новый фрейм данных имел 642
для каждой метки класса.
Я думал, что этот мог бы помочь, однако стратификация сохраняет только один процент от каждой метки, но я хочу, чтобы все мои метки имели одинаковую частоту.
Как пример кадра данных:
df = pd.DataFrame()
df['y'] = sum([[10]*6645, [9]* 6213,[8]* 5789, [7]*4643,[6]* 2532, [5]*1839,[4]* 1596,[3]* 878, [2]*815, [1]* 642],[])
df['X'] = [random.choice(list('abcdef')) for i in range(len(df))]