Пошаговая стандартизация данных с автоматизацией функций
- text-to-text
(от codex-master )
- text-to-text
Промпт формирует воспроизводимый workflow стандартизации данных с учётом типовых проблем качества и доменного контекста. Он требует набор исполняемых функций, порядок проверок и правила контроля качества для промышленной очистки.
В этом промпте 94 строки и 9550 символов
Соблюдай все обязательные требования ниже. Верни только итоговый результат в требуемом формате. Не добавляй вступления, комментарии о процессе, предупреждения, альтернативные версии или просьбы что-либо уточнить. Если часть входных данных отсутствует и исходный промпт допускает рабочие предположения, явно фиксируй их только там, где это прямо требуется. Сохраняй placeholders, JSON, YAML, SQL, код, формулы, названия метрик, пороги, порядок разделов и другие обязательные технические элементы без искажений.
Ниже приведён исходный замысел и обязательные ограничения. Сохрани смысл, полноту и прикладную ценность, но сделай ответ максимально однозначным, компактным и готовым к использованию с первой попытки.
Вы — эксперт по инженерии данных. На основе следующих входных параметров подготовьте самодостаточный, пошаговый рабочий процесс стандартизации данных и реализуйте набор программных функций на {programming_language}, которые автоматически выполняют перечисленные задачи.
Входные данные (замените фигурные скобки фактическими значениями при запуске):
- {dataset_description} — краткое описание набора данных (количество строк/столбцов, типы полей, примерные названия колонок).
- {data_issues} — перечисление проблем в данных (например: смешанные форматы дат, различные кодировки текста, опечатки в категориальных значениях, числовые поля с разделителями разных локалей, пропуски, выбросы).
- {programming_language} — целевой язык реализации (например: Python).
- {business_context} — контекст бизнеса/домена, к которому относится набор данных (например: розничная торговля, финансы, здравоохранение).
Цель
- Предоставить воспроизводимый, проверяемый рабочий процесс стандартизации данных, покрывающий обнаружение и исправление проблем из {data_issues} с учётом {business_context}.
- Реализовать функции на {programming_language}, которые автоматизируют:
1) обнаружение и стандартизацию форматов дат/времени,
2) очистку и нормализацию текстовых полей,
3) стандартизацию категориальных значений,
4) обеспечение единообразия числовых форматов.
- Включить контрольные точки валидации данных и обработку ошибок для типичных и крайних случаев.
Требования к рабочему процессу (минимум)
1. Описание этапов: предварительный анализ, профилирование, правила исправления, применение преобразований, валидация, логирование, отчёт и откат/запись артефактов (начальный/промежуточный/финальный датасеты).
2. Для каждого этапа укажите: входные/выходные артефакты, критерии прохождения (acceptance criteria), ожидаемые метрики (например: доля корректных дат, процент нормализованных категорий, доля пропусков).
3. Контрольные точки (checkpoints): минимум 4 (после профилирования, после каждой основной группы преобразований и финальная валидация) с описанием проверок и порогов.
4. Обработка ошибок: явный список возможных проблем и стратегия для каждой (логирование, попытка исправления, пометка для ручной проверки, откат). Укажите поведение по умолчанию и параметры конфигурации для автоматического/ручного режима.
Требования к коду (минимум)
1. Язык: {programming_language}. Поддерживаемые библиотеки: если {programming_language} == "Python" — допустимо использовать pandas, numpy, python-dateutil, regex, pycountry, unidecode; сторонние библиотеки — перечислите и обоснуйте необходимость. Если другой язык — укажите стандартные/рекомендуемые библиотеки.
2. Структура: модуль/пакет с ясно именованными функциями, конфигурационным файлом (YAML/JSON) для правил стандартизации и порогов, README с инструкцией запуска.
3. Стиль: явные сигнатуры функций, аннотации типов, подробные docstring для каждой функции (описание, параметры, возвращаемое значение, возможные исключения).
4. Тестирование: единичные тесты (pytest или эквивалент), примеры входных данных и ожидаемых выходов, тесты на крайние случаи.
5. Логирование и отчётность: лёгкая система логирования с уровнями (INFO/WARNING/ERROR) и генерация финального отчёта/summary (в JSON и человекочитаемом формате) с метриками и списком нереализованных исправлений.
6. Производительность: указать экономичные по памяти подходы для больших датасетов (процессинг chunk-wise, дельта-преобразования) и рекомендации по масштабированию.
Обязательные функции (реализуйте как API модуль с этими функциями и вспомогательными)
- detect_and_standardize_datetime(df, columns: List[str], config: dict) -> (df_out, report)
- Автоматически обнаруживает колонки с датами/временем (и/или использует переданные names), распознаёт смешанные форматы, стандартирует в ISO 8601 (UTC по умолчанию) с сохранением timezone если доступен.
- Параметры config: список ожидаемых форматов, приоритет локалей, стратегия для двусмысленных дат (D/M/Y vs M/D/Y), политика обработки нераспознанных значений.
- Возвращает преобразованный df и подробный report с количеством успешных/неудачных преобразований, примерами нераспознанных значений, предполагаемыми исправлениями.
- Обработка ошибок: ambiguous_date -> пометка и применение config.strategy; timezone conflicts -> нормализация/логирование.
- normalize_text_fields(df, columns: List[str], config: dict) -> (df_out, report)
- Очистка: тримминг, нормализация пробелов, удаление/замена управляющих символов, исправление кодировок (UTF-8), унификация регистра (config: lower/title/upper/preserve), удаление/замена спецсимволов.
- Нормализация диакритики (настройка: unidecode vs preserve), исправление распространённых опечаток (поддержка словаря/правил), стандартизация форматов встроенных данных (телефоны, email — вынести в отдельные валидаторы).
- Возвращает отчёт с примерами исходных и нормализованных значений, количеством изменений и list problematic_rows.
- standardize_categorical_values(df, column: str, mapping: dict|None, config: dict) -> (df_out, report)
- Автоматическое обнаружение синонимов/опечаток (fuzzy matching, lower+strip), приведение к справочному набору значений (если mapping не передан — сконструировать предложения mapping на основе частот и similarity).
- Поддержка уровня уверенности: auto-apply, suggest, require-manual.
- Отчёт: сколько значений замаплено автоматически, сколько предложено, какие значения неизвестны.
- unify_numeric_formats(df, columns: List[str], config: dict) -> (df_out, report)
- Обнаружение числовых колонок, где числа представлены как строки с разными локалями (разделители тысяч/десятичных), удаление/замена локализованных символов, преобразование в float/int с заданной точностью, обработка валютных символов, процентов и отсутствующих значений.
- Валидация диапазонов (config позволят задать min/max/expected distribution), шаги для корректировки (clipping, flagging).
- Отчёт с количеством преобразований, ошибочных/необработанных строк, примерами.
Валидация и контроль качества
- Опишите набор валидационных проверок, которые выполняются на каждой контрольной точке: типы колонок, процент пропусков, процент валидных дат, cardinality категорий, распределение чисел, детекция дубликатов, check на referential integrity (если есть внешние ключи).
- Метрики и пороги по умолчанию (с возможностью переопределения в config): e.g. valid_date_rate >= 0.98, normalized_text_rate >= 0.95, numeric_parse_rate >= 0.99. Для каждой проверке укажите действие при провале (лог, предупреждение, остановка, откат).
Обработка крайних случаев (список и реализация)
- Амбигьюити форматов дат (01/02/03) — стратегия выбора и как документировать неопределённые случаи.
- Различные кодировки и нечитаемые символы — fallback стратегия.
- Очень длинные/многошумные текстовые поля — правила сокращения и логирование.
- Категории с очень низкой частотой — как агрегировать (others/unknown) и критерии.
- Экстремальные числовые выбросы и NaN — флаги и рекомендации.
- streaming/chunked обработка больших таблиц и контроль согласованности после сшивки чанков.
Артефакты, которые нужно сдать
1. Документированный рабочий процесс (подробный план шагов, критерии, форматы артефактов).
2. Реализация кода на {programming_language} в виде модуля/пакета:
- файл(ы) с реализацией функций, конфигурационный файл-пример, README с инструкцией по запуску.
3. Набор unit-тестов, включая тесты на перечисленные крайние случаи.
4. Пример запуска на небольшом synthetic-примере: входной CSV (пример 10–20 строк, демонстрирующий все типы ошибок), команда запуска, ожидаемый JSON-отчёт и итоговый cleaned CSV.
5. Лог-файл образец и финальный summary-report.
6. Краткая инструкция по развёртыванию и интеграции в ETL/Workflow (cron/job, batch/stream), рекомендации по мониторингу (метрики, alerting).
Дополнительные указания по стилю вывода в ответе
- Сначала краткий план рабочего процесса (5–10 шагов).
- Затем конкретные сигнатуры функций и пояснения по параметрам/config.
- Потом пример конфигурационного файла (структура YAML/JSON).
- Затем пример входного мини-CSV (10–20 строк) и ожидаемый результат после обработки (показать 5–10 строк).
- Наконец: список файлов, которые вы предоставите, и команда(ы) для запуска тестов.
Ограничения
- Не добавляйте новых целей, не расширяйте задачу за пределы описанных четырёх автоматизаций и требований валидации.
- Не используйте внешние сервисы для валидации (API calls). Решения должны быть автономными.
- Код должен быть воспроизводим и запускаем локально с минимальным набором зависимостей.
Формат вывода от модели (в ответ на этот промпт)
- Сгенерируйте полный рабочий процесс и код (файлы), как указано в разделе "Артефакты".
- Отдельно вставьте пример конфигурации, пример входного CSV и ожидаемый cleaned CSV.
- Включите примеры unit-тестов и команды для их запуска.
Промпт доступен бесплатно после авторизации.
ChatGPT, Claude, GigaChat, Алиса ИИ, По нейросетям, Типы промптов, Яндекс GPT