Создание признака в pd.DataFrame() сгруппированного по UserID
Имеется набор данных, запись кликов пользователей. В строке записаны ID пользователя, и некоторый количественный признак, например, время сессии. Также написана функция, которая выводит для массива numpy гибридный массив - накопительное среднее + плавающее среднее, того же размера:
def moving_average_mit_anfang(x, w):
# Первая часть - усредненный профиль по чтениям
first_part_result = np.cumsum(x)/np.cumsum(np.ones(len(x)))
# Если активность пользователя превышает размер скользящего окна, то посчитаем его
if len(x)>w:
# Вторая часть - плавающее среднее шириной w
sec_part_result = np.convolve(x, np.ones(w), 'valid') / w
return np.append(first_part_result[:len(x)-(w+1)],sec_part_result)
# Если активность пользователя меньше скользящего окна, то выводим накопительное среднее
else:
return first_part_result
Нужно применить эту функцию к столбцу feature_1, так, чтобы каждой записи соответствовало текущее значение среднего с учетом id пользователя и его истории на данный момент.
Модельный датафрейм:
pd.DataFrame(data={'ID':[1,2,3,2,3,1,2,1,3,3,3,2,1],
'Feature_1':[4,5,6,73,2,21,13,45,32,9,18,45,39]})