TL;DR
LLM не вычисляет пропущенные значения в таблице — она их вспоминает. Когда вы просите заполнить пустые ячейки, модель обращается к знаниям из обучающего корпуса, а не строит статистическую модель на ваших данных. Это фундаментальное отличие от традиционного подхода, и из него вытекает всё остальное.
Главная находка: LLM отлично работает с "узнаваемыми" данными — публичными датасетами, типовыми отраслевыми форматами, стандартными бизнес-метриками. Она видела это в интернете. Но на синтетических или нетипичных данных она галлюцинирует — уверенно подставляет правдоподобные, но неверные значения. Нет знакомого контекста → нет надёжного результата.
Промпт решает структурную проблему: без правильного промпта LLM либо описывает алгоритм вместо того чтобы заполнить таблицу, либо объясняет логику рассуждений, либо подставляет "NaN". Исследователи нашли рабочую структуру: роль аналитика + фраза-триггер "предоставляю подмножество датасета" + блок ограничений. Эта комбинация даёт чистый, структурированный вывод без мусора.
Схема метода
ШАГ 1: Роль → "Ты — аналитик данных"
ШАГ 2: Триггер → "Предоставляю подмножество датасета [название/домен]"
ШАГ 3: Таблица → вставить данные с пропусками (пустые ячейки или NaN)
ШАГ 4: Ограничения → не запускай код / не объясняй / не ставь NaN / верни только заполненную таблицу
─────────────────────────────────────────────────────
Один промпт. Один запрос. Один вывод — чистая таблица.
Пример применения
Задача: Ты эйчар в российской IT-компании. Собрал таблицу по 50 кандидатам на позицию Python-разработчика с hh.ru и Хабр Карьера. У части — заполнена зарплатная вилка, опыт, грейд. У части — пропуски. Хочешь получить рабочую таблицу без дыр, чтобы отдать рекрутеру.
Промпт:
Ты — аналитик данных с опытом в HR-аналитике.
Я предоставляю подмножество датасета по кандидатам
на позицию Python-разработчика с российского рынка труда.
В таблице ниже есть пропущенные значения (отмечены как [пусто]).
Заполни пропуски на основе типичных паттернов для этого домена.
Ограничения:
- Не объясняй логику заполнения
- Не пиши код
- Не ставь NaN, ?, или любые заглушки
- Верни только заполненную таблицу в том же формате
Таблица:
Грейд | Опыт (лет) | Зарплата (руб.) | Стек
Junior | 1 | [пусто] | Django, PostgreSQL
Middle | [пусто] | 250 000 | FastAPI, Redis, Docker
[пусто] | 6 | 380 000 | Python, Kafka, K8s
Senior | 8 | [пусто] | ML, PyTorch, Airflow
Результат: Модель вернёт таблицу с заполненными пропусками — без объяснений, без кода, без лишних слов. Значения будут соответствовать типичным паттернам российского IT-рынка (Junior + Django = зарплата в диапазоне junior-рынка, 6 лет опыта + Kafka/K8s = скорее всего Senior, и т.д.). Модель использует знания о рынке труда, которые она получила из открытых источников при обучении.
Почему это работает
Слабость LLM "в лоб" — когда просишь "заполни пропуски", модель не знает: выдать результат или объяснить процесс? Провести расчёт или описать алгоритм? Без инструкций поведение непредсказуемо: одна модель напишет "среднее значение по столбцу = X", другая попробует описать kNN-алгоритм текстом, третья подставит заглушки.
Сильная сторона LLM — огромный объём семантических паттернов. Модель "видела" тысячи таблиц, датасетов, отчётов по найму, финансовым показателям, медицинским данным. Она знает, что Junior Python-разработчик в России зарабатывает примерно столько-то, а не статистически считает это по вашим 50 строкам.
Как метод использует это: Фраза-триггер "предоставляю подмножество датасета" активирует нужный режим: модель понимает, что данные — часть чего-то знакомого, и обращается к паттернам из обучения. Блок ограничений убирает все альтернативные сценарии поведения. Модель получает одну возможную реакцию: заполнить таблицу.
Рычаги управления промптом:
- Домен в триггере ("датасет по медицинским показателям" vs "датасет по финансам") → сильнее активирует нужный контекст
- Детализация ограничений → убери строку "не объясняй" и увидишь рассуждения модели — полезно для отладки
- Размер батча → большие таблицы (300+ строк) лучше резать на куски по 50-100 строк и отправлять отдельными запросами
Шаблон промпта
Ты — аналитик данных.
Я предоставляю подмножество датасета из области {домен}.
В таблице ниже есть пропущенные значения, отмеченные как {маркер_пропуска}.
Заполни их на основе паттернов, характерных для этого домена.
Ограничения:
- Не объясняй логику
- Не пиши код
- Не используй {маркер_пропуска} или любые заглушки в ответе
- Верни только заполненную таблицу в том же формате
Таблица:
{таблица_с_пропусками}
Плейсхолдеры:
- {домен} — что за данные: медицина, HR, финансы, e-commerce, логистика. Чем конкретнее — тем лучше
- {маркер_пропуска} — как обозначены пропуски у вас: [пусто], -, NaN, ?
- {таблица_с_пропусками} — вставить таблицу (markdown, CSV или просто столбцы через Tab из Excel)
🚀 Быстрый старт — вставь в чат:
Вот шаблон для заполнения пропусков в таблице.
Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит: какой домен данных, как отмечены пропуски, в каком формате таблица — потому что без этого она не сможет правильно активировать нужный контекст и вернуть структурированный результат.
Ограничения
⚠️ Нестандартные данные: Если ваши данные нетипичны — специфичные внутренние метрики, нестандартные шкалы, проприетарные форматы — LLM будет галлюцинировать. Уверенно заполнит, но значения будут "правдоподобной выдумкой". Синтетические данные в исследовании провалили этот тест полностью.
⚠️ Объём: Большие таблицы (сотни строк) в чате не работают: контекст переполняется, модель начинает ошибаться в структуре. Для реального масштаба нужен Python + API.
⚠️ Числовая точность: LLM — семантический инструмент, не статистический. Она даст "правдоподобное" значение, не "математически оптимальное". Для задач где нужна точность (медицинская диагностика, финансовая отчётность) — доверяй результату с осторожностью и проверяй.
⚠️ Нет объяснения: Промпт намеренно убирает объяснения. Если хочешь понять почему модель поставила конкретное значение — убери строку "не объясняй логику" из блока ограничений.
Как исследовали
Команда из Бразилии и Португалии собрала 29 датасетов: 20 публичных (датасеты из UCI и OpenML — Pima Diabetes, Iris, German Credit и другие) и 9 синтетических, сгенерированных с нуля через scikit-learn. Логика хитрая: публичные датасеты наверняка попали в обучающий корпус моделей, а синтетические — точно нет. Это позволило напрямую проверить гипотезу "LLM работает потому что видела эти данные раньше".
В каждый датасет искусственно вносили пропуски трёх типов: случайные (MCAR), зависящие от других переменных (MAR) и коррелирующие с самими пропущенными значениями (MNAR). Доли пропусков: 5%, 10%, 20%. Затем пять LLM (Gemini 3.0 Flash, Claude 4.5 Sonnet, GPT-4.1 Nano, Mistral Devstral, MiMo) сравнивали с шестью классическими методами: kNN, MICE, missForest и другими.
Результат подтвердил гипотезу сильнее, чем ожидалось: на публичных датасетах Gemini и Claude стабильно обыгрывали классику. На синтетических — традиционные методы (особенно MICE) wins hands down. Это прямое доказательство: LLM не считает — она вспоминает. Дополнительный сюрприз — стоимость: Claude 4.5 Sonnet обходится в сотни раз дороже остальных, а результат сопоставим с бесплатным Gemini или дешёвым GPT-4.1 Nano.
Адаптации и экстраполяции
1. Когда проверить надёжность результата
Перед тем как доверять заполненным значениям, добавь в промпт диагностический вопрос отдельным запросом:
💡 Адаптация: диагностика уверенности
Оцени каждое из подставленных значений по шкале 1-3:
1 — высокая уверенность (паттерн хорошо известен)
2 — средняя (есть косвенные данные)
3 — низкая (пришлось угадывать)
Верни таблицу с дополнительным столбцом "Уверенность".
Это покажет где LLM работала уверенно по реальным знаниям, а где — фантазировала.
🔧 Техника: снять ограничения → понять логику
Убери строку "Не объясняй логику" — и модель покажет рассуждения перед каждым значением. Полезно для отладки промпта или когда хочешь проверить, на что опирается модель.
2. Принцип "знакомый контекст" за пределами таблиц
Этот принцип работает шире заполнения таблиц. LLM надёжна там, где у неё есть семантическая основа из обучения — и ненадёжна там, где контекст незнаком.
💡 Экстраполяция: Когда просишь LLM заполнить любые пробелы — в документе, описании продукта, резюме проекта — явно указывай домен и контекст. Фраза "это из области [домен], вот часть документа" работает как триггер: модель активирует нужный пласт знаний, а не генерирует "что-то похожее".
Ресурсы
Статья: Large Language Models for Missing Data Imputation: Understanding Behavior, Hallucination Effects, and Control Mechanisms
Авторы: Arthur Dantas Mangussi, Ricardo Cardoso Pereira, Ana Carolina Lorena, Pedro Henriques Abreu
Организации: Aeronautics Institute of Technology (ITA) и Federal University of São Paulo, Бразилия; University of Coimbra (CISUC/LASI), Португалия
Репозиторий с кодом и данными: доступен — авторы указывают на публичный GitHub в секции "Code availability"
Датасеты: UCI Machine Learning Repository — https://archive.ics.uci.edu/ и OpenML
