У меня есть столбец фрейма данных, в котором указано, сколько раз пользователь выполнил действие. например.
>>> df['ActivityCount']
Users ActivityCount
User0 220
User1 190
User2 105
User3 109
User4 271
User5 265
...
User95 64
User96 15
User97 168
User98 251
User99 278
Name: ActivityCount, Length: 100, dtype: int32
>>> activities = sorted(df['ActivityCount'].unique())
[9, 15, 16, 17, 20, 23, 25, 26, 28, 31, 33, 34, 36, 38, 39, 43, 49, 57, 59, 64, 65, 71, 76, 77, 78,
83, 88, 94, 95, 100, 105, 109, 110, 111, 115, 116, 117, 120, 132, 137, 138, 139, 140, 141, 144, 145, 148, 153, 155, 157, 162, 168, 177, 180, 182, 186, 190, 192, 194, 197, 203, 212, 213, 220, 223, 231, 232, 238, 240, 244, 247, 251, 255, 258, 260, 265, 268, 269, 271, 272, 276, 278, 282, 283, 285, 290]
Согласно их ActivityCount, я должен разделить пользователей на 5 разных категорий, например, A, B, C, D
и E
. Диапазон подсчета активности время от времени меняется. В приведенном выше примере это примерно среднее значение (9-290)
(наименьшее и наибольшее в серии), это может быть (5-500)
или (5 to 30)
. В приведенном выше примере я могу взять максимальное количество действий, разделить его на 5 и распределить каждого пользователя по категориям в диапазоне 58 (from 290/5)
, например, Range A: 0-58
, Range B: 59-116
, Range C: 117-174
... et c
Есть ли другой способ добиться этого, используя pandas или numpy, чтобы я мог напрямую разделить столбец на указанные категории? Ожидаемый результат: -
>>> df
Users ActivityCount Category/Range
User0 220 D
User1 190 D
User2 105 B
User3 109 B
User4 271 E
User5 265 E
...
User95 64 B
User96 15 A
User97 168 C
User98 251 E
User99 278 E