user_id char_id rating
100 33 3
100 44 2
100 33 1
100 44 4
111 55 5
111 44 4
111 55 5
У меня есть кадр данных в формате так же к этому и пытаюсь выполнить расчеты по рейтингам после того как они были сгруппированы по user_id
и char_id
. Не работает, но мне нужно сделать что-то вроде data.groupby('user_id', 'char_id')
, а затем рассчитать скользящую среднюю за каждые char_id
за каждые user_id
. Любая помощь? У меня есть несколько тысяч user_id
, поэтому я не могу пройти и выбирать по одному для вычислений.Выполнение расчетов на подмножества данных кадра подмножества в Python
Мне нужно как-то перебрать столбец user_id
и объединить все одинаковые user_ids вместе и сохранить этот формат, чтобы user_id
s были отдельными. Затем мне нужно сделать то же самое, итерации по char_id
для каждого подмножества user_id
и сохранения этого формата, чтобы я мог, наконец, выполнить вычисления на подмножествах подмножеств рейтингов. Пока все мои попытки не увенчались успехом. Ближайший я пришел было:
def divide_by_user(data):
for user in data['user_id']:
user_data = data.where(data['user_id'] == user)
return user_data
Когда я пытаюсь выполнить код, который вы предоставили с расширением_mean, он запускается, но df ['cum_average'] просто отображает копию df ['rating']. Кроме того, когда я пытаюсь запустить с окном roll_mean из 7 (это именно то, что я искал, спасибо!) Я получаю: AttributeError: объект «Серии» не имеет типа атрибута. – Rachael
@Rachael: Использование 'roll_mean' не должно быть слишком разным, см. Новый пример, который я добавил. Я не уверен, что пошло не так для вас, но вы, возможно, ставили аргумент 'window = 7' в неправильном месте? – Marius
@Rachael: Кроме того, результат 'expand_mean' будет просто копией столбца рейтинга для первого рейтинга в каждом подмножестве, и только после того, как вы получите второе значение в каждом подмножестве, вы увидите разницу. – Marius