Разведочный анализ данных (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: от выгрузки к инсайтам
Процесс укладывается в пять шагов. Сперва — общая схема, потом каждый этап с конкретными промптами.
Сырые данные (серый) загружаются через этап парсинга и типизации (жёлтый) и попадают в 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-плагин | Код генерируется в ноутбуке, данные локально | Нужно настраивать окружение |
| PandasAI | Python-библиотека, запросы на естественном языке к DataFrame | Медленно на больших данных, платные API-ключи |
| Локальные LLM (Ollama + llama3) | Данные не покидают контур | Качество анализа ниже, чем у GPT-4/Claude |
ChatGPT Code Interpreter — самый быстрый старт. Загружаете CSV, пишете «найди аномалии в продажах по регионам», через минуту получаете графики и пояснения. Но помните про конфиденциальность — для внутренних данных компании этот вариант отпадает.
Чек-лист для аналитика
- Загрузите не сырые данные, а статистический портрет — модель не осилит миллион строк в промпте
- Начинайте с описания структуры, потом аномалии, потом гипотезы — в этом порядке модель не путается
- Цифры от LLM перепроверяйте. Модель — собеседник, а не калькулятор
- Доменную логику описывайте явно. «У нас cancelled после 24 часов не возвращается» — важно сказать, иначе модель предложит проверить то, что для вас очевидно
- Для приватных данных — агрегируйте до статистики или используйте локальные модели
- Если гипотеза от модели выглядит странно — проверьте в первую очередь. Чаще всего странные гипотезы — самые ценные