Logo
Overview

Разведочный анализ данных с AI: как задавать вопросы к таблицам и получать инсайты

September 14, 2026
9 min read

Разведочный анализ данных (EDA) — это не про красивые дашборды. И не про SQL на три экрана. Это про момент, когда вы открыли выгрузку на 50 тысяч строк, а в голове — ноль гипотез. Просто таблица. Просто колонки с непонятными названиями вроде cust_seg_v3_final_final. И единственный вопрос: «Что здесь вообще происходит?»

Раньше ответ на этот вопрос требовал часа ручного ковыряния: сводные таблицы, фильтры, графики в Excel, потом ещё пара запросов в БД, потому что Excel лёг. Теперь можно иначе. LLM не заменяет аналитика — но она может стать тем собеседником, который за секунду просматривает всю таблицу и говорит: «Смотри, вот тут аномалия, а вот тут корреляция 0.87, покопаем?»

Если вам интересно, как LLM работает с SQL-запросами и схемами — есть отдельный разбор про AI для генерации SQL. А здесь — про другой сценарий: когда запросы ещё не сформулированы, данных много, а вопросов — ещё больше.

Что такое разведочный анализ и почему AI меняет правила

Классический EDA — это цикл: посмотрел на данные → заметил что-то странное → проверил гипотезу → опять посмотрел. Проблема в том, что «посмотрел» — узкое горлышко. Человек в таблице на 50 колонок видит примерно 8–10 за раз. Остальное — слепые зоны. Вы можете пропустить корреляцию между avg_session_time и churn_rate просто потому, что эти колонки оказались на разных концах файла и вы до них не долистали.

LLM меняет это. Она читает всё. Все колонки, все строки, все распределения — за один проход. И главное — она не устаёт. На сотой гипотезе человек начинает тупить (я проверял). Модель — нет.

Есть три сценария, где AI-разведка даёт выигрыш:

  • Первичный осмотр незнакомых данных. Вам скинули выгрузку от заказчика — 12 листов Excel, названия колонок на трёх языках, часть данных, судя по всему, из другой системы. LLM за минуту описывает структуру, находит дубликаты ID, подсвечивает, где данные обрываются и где аномальные значения.
  • Поиск гипотез. Вы знаете бизнес-домен, но не знаете, с какой стороны подойти к данным. Спрашиваете модель: «Какие колонки сильнее всего коррелируют с оттоком?», «Есть ли сезонность в заказах?», «Какие сегменты клиентов ведут себя аномально?»
  • Быстрая визуализация. Описываете, какой график нужен — модель генерирует Python-код для matplotlib или plotly. Вы запускаете и получаете картинку. Без ручного написания fig, ax = plt.subplots() в десятый раз за день.

Конечно, LLM не видит данные «глазами». Ей нужен контекст — либо сама таблица (если влезает в окно), либо статистическое описание. И да, модель может ошибаться в цифрах. Но для первичного осмотра и генерации гипотез этого хватает с запасом.

Pipeline: от выгрузки к инсайтам

Процесс укладывается в пять шагов. Сперва — общая схема, потом каждый этап с конкретными промптами.

100%
graph LR
  DATA["Сырые данные<br/>CSV, Excel, SQL-выгрузка<br/>JSON, API"]
  LOAD["Загрузка<br/>Парсинг, очистка<br/>типизация колонок"]
  LLM["LLM-анализ<br/>Ответы на вопросы<br/>поиск закономерностей"]
  INSIGHTS["Инсайты<br/>Тренды, выбросы<br/>корреляции, сегменты"]
  ANOMALIES["Аномалии<br/>Пропуски, дубли<br/>противоречия"]
  VIZ["Визуализация<br/>Графики, дашборды<br/>автоматическая"]
  HUMAN["Аналитик<br/>формулирует вопросы<br/>интерпретирует"]
  
  DATA --> LOAD
  LOAD --> LLM
  LLM --> INSIGHTS
  LLM --> ANOMALIES
  LLM --> VIZ
  HUMAN -.->|"гипотезы и уточнения"| LLM
  HUMAN -->|"принимает решения"| INSIGHTS
  
  style DATA fill:#e0e0e0,stroke:#999,color:#333
  style LOAD fill:#f0a500,stroke:#c88400,color:#fff
  style LLM fill:#4a90d9,stroke:#2c5f8a,color:#fff
  style INSIGHTS fill:#50c878,stroke:#3a9a5c,color:#fff
  style ANOMALIES fill:#7b68ee,stroke:#5a4db2,color:#fff
  style VIZ fill:#50c878,stroke:#3a9a5c,color:#fff
  style HUMAN fill:#7b68ee,stroke:#5a4db2,color:#fff

Сырые данные (серый) загружаются через этап парсинга и типизации (жёлтый) и попадают в LLM-анализ (синий). Оттуда три параллельных выхода: инсайты о трендах и закономерностях (зелёный), подсветка аномалий — пропусков, дублей, противоречий (фиолетовый) — и автоматическая визуализация (зелёный). Аналитик (фиолетовый) не стоит в стороне: он закидывает гипотезы в модель (пунктир) и принимает решения по найденным инсайтам. Модель — это ускоритель цикла «вопрос — ответ», а не замена голове аналитика.

Шаг 1. Загрузка и описание структуры

Первое, что нужно сделать — скормить модели метаданные таблицы. Не все 50 тысяч строк (они не влезут в контекст), а статистический портрет.

Промпт для первого осмотра:

У меня есть датасет с колонками:
- order_id (int)
- customer_id (int)
- order_date (date)
- amount (float)
- status (string)
- region (string)
- delivery_days (int)
Вот первые 10 строк:
[вставить]
Вот статистика:
- amount: среднее 4500, медиана 3200, мин 100, макс 145000
- delivery_days: среднее 3.2, медиана 2, мин 0, макс 47
- status: уникальных значений 6, топ: delivered 62%, cancelled 18%
- region: уникальных значений 14, топ: Москва 34%, СПб 18%
Опиши структуру данных: какие колонки ключевые, где
потенциальные проблемы (пропуски, выбросы), какие связи
между колонками стоило бы проверить в первую очередь.

Модель на таком промпте выдаёт связный отчёт. Не глубокий, но достаточный чтобы понять: amount имеет выброс в 145 000 (при медиане 3 200 — это либо VIP-заказ, либо ошибка), у 18% заказов статус cancelled (много это или мало — зависит от домена, но модель подсветит), а delivery_days = 0 для delivered-заказов — физически невозможно, значит либо баг, либо самовывоз не отмечен.

Примечательно, что даже без доменной экспертизы модель замечает нестыковки на уровне здравого смысла. Это экономит час-два ручного осмотра.

Шаг 2. Поиск аномалий

После общего осмотра — прицельный поиск странностей. Промпт:

В датасете выше найди аномалии:
1. Строки, где delivery_days > 14 И status != 'delayed'.
Сколько таких?
2. Строки, где amount > 50000. Есть ли у них общие
признаки (регион, месяц, что-то ещё)?
3. Проверь, нет ли дубликатов по order_id.
4. Проверь customer_id на повторяющиеся заказы
в один день — это может быть баг дублирования.
5. Посмотри распределение amount по регионам:
где медиана выше/ниже ожидаемой.
Для каждого пункта — вывод: сколько записей затронуто,
это баг или особенность данных, что проверить дополнительно.

Такой структурированный промпт работает лучше, чем общее «найди аномалии». Модель идёт по чек-листу, не пропускает пункты и даёт воспроизводимый результат. Я на своих данных так отловил дублирование заказов: оказалось, интеграция с платёжным шлюзом при таймауте повторяла запрос, и в базу попадали две записи с одним external_id. Ручной осмотр этого не выявил — дубли были разнесены по разным страницам выгрузки.

Шаг 3. Генерация гипотез

Самый интересный этап. Вы даёте модели бизнес-контекст и спрашиваете: «что проверить?». Промпт:

Я аналитик интернет-магазина. Данные по заказам за полгода —
колонки те же, что выше.
Моя цель: понять, почему клиенты уходят (не делают
повторных заказов больше 60 дней).
На основе структуры данных предложи 10 гипотез, которые
стоит проверить. По каждой гипотезе:
- Что именно проверяем (конкретная формула, разрез)
- Какой результат будет считаться подтверждением
- Какие колонки нужны
Не предлагай очевидное вроде «может, товар плохой».
Ищи в данных: доставка, регион, сумма заказа, сезон.

Модель выдаёт вещи, до которых я бы дошёл — но через полчаса размышлений, а не за 15 секунд. Например: «Клиенты с первым заказом на сумму выше 10 000 рублей и доставкой дольше 5 дней имеют вероятность повторного заказа на 40% ниже, чем клиенты с быстрой доставкой любой суммы». Или: «В регионе X медианное время доставки 7 дней против 2 в среднем по стране — проверьте, не теряете ли вы этот регион целиком».

Не все гипотезы подтверждаются. Из десяти рабочих — две-три. Но они подсвечивают разрезы, которые вы не проверили бы в первом заходе. А это и есть смысл EDA.

Шаг 4. Автоматическая визуализация

LLM не рисует графики сама. Но она генерирует код, который вы запускаете локально. Промпт:

Напиши Python-код для Jupyter Notebook.
Датасет: pandas DataFrame df с колонками [список].
Построй:
1. Boxplot amount по регионам (топ-10 регионов).
2. Heatmap корреляций между числовыми колонками.
3. Распределение delivery_days, разделённое
по status (histogram, наложенные слои с альфой 0.5).
Используй plotly для интерактивности.
Добавь заголовки, подписи осей, легенду на русском.
Выводи графики в том же порядке, что в списке.

Код приходит рабочий — если модель знает структуру колонок. Ошибки бывают в названиях полей (перепутала delivery_days и delivery_time), но это правится одной заменой. Главное — вы не пишете бойлерплейт. А это 80% времени любой визуализации.

С визуализацией есть нюанс: модель может сгенерировать код, который падает на реальных данных. Пропуски в колонках, строковые значения там, где ожидался int — классика. Поэтому в промпт стоит добавить строчку: «Учти, что в данных могут быть None и некорректные типы — добавь обработку ошибок». Работает.

Шаг 5. Итерация: вопрос — ответ — вопрос

EDA с AI — это не линейный конвейер. Это диалог. Вот реальный пример моего диалога с моделью по данным клиентской аналитики:

— Покажи топ-5 регионов по среднему чеку. — Москва 6200, СПб 5800, Казань 4900, Новосибирск 4700, Екатеринбург 4500. — В Новосибирске медиана какая? — 2100. Среднее тянет вверх 3% клиентов с чеками выше 50000. — Так, а эти 3% — они из какого сегмента? Посмотри по первой покупке. — 70% из них — юрлица, первый заказ от 30000, все через корпоративный тариф. — Ок, исключи юрлица и пересчитай среднее по регионам.

Три минуты. Ручными запросами я бы потратил полчаса, и ещё столько же — на оформление результатов. Модель же работает как очень быстрый и очень педантичный стажёр: всё помнит, не переспрашивает, не уходит в отпуск.

Когда AI-разведка не работает

Нет, это не серебряная пуля. Вот сценарии, где модель спотыкается:

  • Слишком много данных. Если таблица не влезает в контекст, а статистическое описание не передаёт нюансов распределения — модель будет гадать. Выход: агрегировать данные до подачи (средние по сегментам, квартили, распределения по дням), либо использовать RAG-подход — про него есть статья про базу знаний на LLM.
  • Специфическая доменная логика. Если в вашей отрасли status = 'pending' означает что-то неочевидное (скажем, «ждём ответа от регулятора, но деньги уже списаны»), модель этого не знает. Нужно явно описывать домен в промпте.
  • Числовые ошибки. LLM может сложить 2+2 и получить 5. Не часто, но бывает. Все цифры, которые модель выдаёт как факт, а не как гипотезу — перепроверяйте.
  • Приватность. Нелья загружать реальные данные клиентов в публичные API (ChatGPT, Claude Web). Для чувствительных данных — либо локальные модели через Ollama, либо агрегированная статистика без сырых строк.

Инструменты для AI-разведки данных

Что реально использовать в работе:

ИнструментПлюсыМинусы
ChatGPT Code InterpreterЗагружаете файл — он сам пишет и исполняет Python-код. Визуализация сразу в чатеДанные уходят на сервера OpenAI. Не для NDA-проектов
Claude + CSV-вложениеЧитает CSV напрямую, строит анализ без кодаЛимит на размер файла, не визуализирует
Jupyter + LLM-плагинКод генерируется в ноутбуке, данные локальноНужно настраивать окружение
PandasAIPython-библиотека, запросы на естественном языке к DataFrameМедленно на больших данных, платные API-ключи
Локальные LLM (Ollama + llama3)Данные не покидают контурКачество анализа ниже, чем у GPT-4/Claude

ChatGPT Code Interpreter — самый быстрый старт. Загружаете CSV, пишете «найди аномалии в продажах по регионам», через минуту получаете графики и пояснения. Но помните про конфиденциальность — для внутренних данных компании этот вариант отпадает.

Чек-лист для аналитика

  • Загрузите не сырые данные, а статистический портрет — модель не осилит миллион строк в промпте
  • Начинайте с описания структуры, потом аномалии, потом гипотезы — в этом порядке модель не путается
  • Цифры от LLM перепроверяйте. Модель — собеседник, а не калькулятор
  • Доменную логику описывайте явно. «У нас cancelled после 24 часов не возвращается» — важно сказать, иначе модель предложит проверить то, что для вас очевидно
  • Для приватных данных — агрегируйте до статистики или используйте локальные модели
  • Если гипотеза от модели выглядит странно — проверьте в первую очередь. Чаще всего странные гипотезы — самые ценные