У меня есть информационная рамка df
формы (450 000, 15), содержащая информацию о пользователях, а каждая строка - это другой пользователь с 13 характеристиками (возраст, пол, родной город ...) и 1 логическая переменная, независимо от того, имеет ли пользователь автомобиль или нет.Pandas groupby с минимальным размером группы
Я хотел бы перегруппировать своих пользователей, чтобы узнать, какие группы имеют большинство автомобилей, но мне нужно сохранить как минимум 2500 пользователей в группе, чтобы они были статистически релевантными.
test= df.groupby(['Gender'])
test.size() # check the groups size
Gender Female 150000 Male 300000 dtype: int64
До сих пор так хорошо, у меня есть намного больше, чем 2500 пользователей по группам. Так что я был еще критерии группировки:
test2= df.groupby(['Gender','Age'])
test2.size()
Gender Age Female <30 15022 30-90 134960 90+ 18 Male <20 5040 20-90 291930 90+ 3030 dtype: int64
Как мы можем ожидать, у меня теперь есть группы с очень маленькими пользователями ...
Я хотел бы иметь что-то вроде этого:
Gender Female 150 000 # Don't split here because groups will be too small # Here I can split, because group size > 2500 : Gender Age Male <20 5040 20-90 291930 90+ 3030 dtype: int64
Я не нашел способ группировать данные по кадрам на основе критериев размера, поэтому мне было интересно, что будет с питоническим способом справиться с этим.
Поскольку у меня есть 13 характеристик для группировки пользователей, мне также интересно узнать о порядке группировки: следует ли сначала группировать по полу, а затем по возрасту или наоборот? Это оказывает влияние при использовании нескольких переменных с условием остановки.
Мне не нужно использовать панды, но я думал, что это будет уместно. Вывод должен выглядеть следующим образом:
name_of_group group_size
Female 150000
Male, <20 5040
Male, 20-90 291930
Male, 90+ 3030