К задачам

Агрегации заказов по пользователям и категориям

СредняяML-задачи
Лучше работает на десктопе
PandasГруппировкаСводная таблицаПодготовка признаков

На собеседовании дают две таблицы: заказы и товары в заказах.

Нужно реализовать функцию build_order_features(orders, items), которая вернет словарь с тремя блоками:

  • category_spend: сколько денег каждый пользователь потратил в каждой категории;
  • order_user_total_spend: для каждого заказа суммарные траты этого пользователя по всем его заказам;
  • weekday_spend: для каждого пользователя вектор из 7 чисел, где индекс 0 соответствует понедельнику, а индекс 6 - воскресенью.

Цена строки считается как price * amount. Если в заказе несколько товаров одной категории, их нужно просуммировать.

Примеры

Пример 1

Вход:
orders = [{"order_id":1,"user_id":"u1","created_at":"2025-01-06"},{"order_id":2,"user_id":"u1","created_at":"2025-01-07"},{"order_id":3,"user_id":"u2","created_at":"2025-01-12"}]
items = [{"order_id":1,"category":"books","price":100,"amount":2},{"order_id":1,"category":"food","price":50,"amount":1},{"order_id":2,"category":"books","price":80,"amount":1},{"order_id":3,"category":"food","price":30,"amount":3}]
Выход:{"category_spend":{"u1":{"books":280,"food":50},"u2":{"food":90}},"order_user_total_spend":{"1":330,"2":330,"3":90},"weekday_spend":{"u1":[250,80,0,0,0,0,0],"u2":[0,0,0,0,0,0,90]}}

Базовая агрегация с amount, категориями и днями недели.

Пример 2

Вход:
orders = [{"order_id":10,"user_id":"u3","created_at":"2025-01-08"},{"order_id":11,"user_id":"u3","created_at":"2025-01-08"}]
items = [{"order_id":10,"category":"games","price":10,"amount":5},{"order_id":10,"category":"games","price":7,"amount":2},{"order_id":11,"category":"books","price":40,"amount":1}]
Выход:{"category_spend":{"u3":{"games":64,"books":40}},"order_user_total_spend":{"10":104,"11":104},"weekday_spend":{"u3":[0,0,104,0,0,0,0]}}

Несколько строк одной категории и два заказа в один день.

Код
Python · Ctrl/⌘ + Enter для запуска
Лимит
00:02
Консоль
Нажмите кнопку запуска или Ctrl+Enter
Агрегации заказов по пользователям и категориям — ML-задачи задача — ML Mentor