Дубли: duplicated и drop_duplicates по ключевым столбцам
Содержание курса
Найди и исправь: три ошибки в duplicated, drop_duplicates и проверке уникальности
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет.
В редакторе уже есть сломанный код. В нём ровно три ошибки в трёх независимых строках:
maskстроится черезdf.duplicated(subset=['product'])— проверяется только столбец'product', хотя по условию дублем считается совпадение сразу по паре('client_id', 'product').df_cleanсоздаётся черезdf.drop_duplicates(subset=['client_id', 'product'], keep='last')— хотя по условию нужно сохранить первое вхождение каждой группы (keep='first').- Проверка уникальности сделана через
df_clean.duplicated(subset=['client_id']).sum()— проверяется только'client_id', хотя уникальность нужно проверять по тому же ключу['client_id', 'product'].
Каждая ошибка — в отдельной строке кода. Исправьте все три.
Что нужно сделать
Исправьте три ошибки так, чтобы программа:
- Читала из
stdinцелое числоn— количество строк таблицы. - Читала следующие
nстрок; каждая содержит три токена через пробел:client_id(целое число),product(строка без пробелов),amount(целое число). Создавалаpd.DataFrameс именемdfи столбцами'client_id','product','amount'. - Строила маску
mask = df.duplicated(subset=['client_id', 'product'])— по паре(client_id, product),keep='first'по умолчанию. - Выводила
dup_count=<k>, гдеk = mask.sum(). - Создавала
df_clean = df.drop_duplicates(subset=['client_id', 'product'], keep='first'). - Выводила
clean_shape=<shape>в виде(rows, cols). - Проверяла
uniq = df_clean.duplicated(subset=['client_id', 'product']).sum()и выводилаuniq=<uniq>. - Для каждой строки
df_clean(в порядке исходного индекса) выводила одну строку вида<client_id> <product> <amount>.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
n client_id1 product1 amount1 client_id2 product2 amount2 ...
Дополнительные ограничения: n >= 1; таблица содержит явно описанные в условии столбцы.
Формат вывода
dup_count=<k>
clean_shape=(<rows>, <cols>)
uniq=<uniq>
<client_id> <product> <amount>
...
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
- Тест 1Ввод
7 1 Стол 500 2 Стул 300 1 Диван 800 1 Стол 550 3 Шкаф 200 2 Стул 320 1 Диван 850
Ожидаемый выводdup_count=3 clean_shape=(4, 3) uniq=0 1 Стол 500 2 Стул 300 1 Диван 800 3 Шкаф 200
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
