Как использовать ИИ для анализа данных в Python
Как языковые модели помогают анализировать данные в Python: от автоматизации EDA до генерации кода для pandas.
Аналитики данных тратят до 80% рабочего времени на подготовку и первичный анализ данных — так называемый EDA (exploratory data analysis). Языковые модели способны автоматизировать значительную часть этой работы: генерировать код для pandas, строить визуализации по описанию на русском языке и находить аномалии в датасетах. Разберём конкретные инструменты и приёмы.
Три подхода к ИИ-анализу данных
Есть три основных способа подключить LLM к анализу данных в Python: через API (программный доступ к GPT-4o или Claude), через специализированные библиотеки (PandasAI, LangChain) и через ИИ-ассистенты в IDE (Cursor, Copilot). Каждый подход решает разные задачи.
API подходит для встраивания ИИ в существующий пайплайн обработки данных. Специализированные библиотеки — для интерактивной работы с данными на естественном языке. ИИ в IDE — для ускорения написания кода аналитиком.
PandasAI: запросы к данным на русском языке
PandasAI — библиотека, которая позволяет обращаться к DataFrame на естественном языке. Установка:
pip install pandasaiПример работы:
import pandas as pd
from pandasai import SmartDataframe
df = pd.read_csv("sales_2025.csv")
sdf = SmartDataframe(df, config={"llm": "gpt-4o"})
# Запрос на естественном языке
result = sdf.chat("Какой продукт принёс наибольшую выручку в Q3?")
print(result)
# Визуализация
sdf.chat("Построй график выручки по месяцам")PandasAI генерирует Python-код, выполняет его и возвращает результат. Библиотека поддерживает русский язык запросов, хотя точность ответов выше при использовании конкретных формулировок.
Автоматизация EDA через API
Для систематического анализа данных эффективнее вызывать LLM через API и передавать ей структуру данных. Пример автоматического EDA:
from openai import OpenAI
import pandas as pd
import json
client = OpenAI()
df = pd.read_csv("dataset.csv")
# Подготовка контекста
data_info = {
"columns": list(df.columns),
"dtypes": {col: str(dtype) for col, dtype in df.dtypes.items()},
"shape": list(df.shape),
"sample": df.head(5).to_dict(),
"describe": df.describe().to_dict(),
"nulls": df.isnull().sum().to_dict()
}
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "Ты — аналитик данных. Проанализируй датасет и дай рекомендации."},
{"role": "user", "content": f"Вот информация о датасете:\n{json.dumps(data_info, ensure_ascii=False)}\n\nПроведи первичный анализ: типы данных, пропуски, аномалии, корреляции."}
]
)
print(response.choices[0].message.content)Модель получает метаданные (не сами данные!) и выдаёт структурированный отчёт с рекомендациями. Это безопасно с точки зрения конфиденциальности — сырые данные не покидают ваш сервер.
Генерация кода для визуализации
LLM хорошо справляются с генерацией кода для matplotlib, seaborn и plotly. Вместо того чтобы вспоминать синтаксис, опишите желаемый результат:
prompt = f"""У меня DataFrame с колонками: {list(df.columns)}.
Напиши код на Python с matplotlib для:
1. Гистограммы распределения колонки 'price'
2. Scatter plot: 'price' vs 'rating'
3. Heatmap корреляций числовых колонок
Используй русские подписи осей."""
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}]
)
# Полученный код можно выполнить через exec() или скопировать в notebook
print(response.choices[0].message.content)Генерация визуализаций через LLM экономит время на рутинных задачах. Для нестандартных графиков модель может потребовать несколько итераций уточнений.
Обнаружение аномалий
LLM полезны для интерпретации результатов статистического анализа. Передайте модели выбросы, обнаруженные классическими методами (IQR, z-score), и попросите объяснить возможные причины:
# Находим выбросы методом IQR
Q1 = df["revenue"].quantile(0.25)
Q3 = df["revenue"].quantile(0.75)
IQR = Q3 - Q1
outliers = df[(df["revenue"] < Q1 - 1.5 * IQR) | (df["revenue"] > Q3 + 1.5 * IQR)]
prompt = f"""В данных о продажах найдены выбросы:
{outliers.to_string()}
Контекст: данные о продажах B2B-компании за 2025 год.
Объясни возможные причины этих аномалий и предложи,
как с ними поступить при анализе."""
# Отправляем в LLM для интерпретацииОграничения и предостережения
LLM допускают ошибки в вычислениях и статистических выводах. Всегда проверяйте сгенерированный код перед выполнением на реальных данных. Модель может предложить некорректную статистическую методологию — например, применить линейную регрессию к нелинейным данным без предупреждения.
Не отправляйте конфиденциальные данные в облачные API. Используйте метаданные (описание колонок, статистики) вместо сырых записей. Для работы с чувствительными данными разверните локальную модель через Ollama.
Инструменты для Jupyter Notebook
Несколько расширений интегрируют LLM прямо в Jupyter: Jupyter AI (официальное расширение от Project Jupyter), ChatGPT Jupyter (неофициальный плагин) и встроенный ИИ в Google Colab. Jupyter AI позволяет обращаться к модели командой %%ai прямо в ячейке ноутбука.
Для командной работы с данными стоит рассмотреть Open WebUI с загрузкой CSV-файлов — это даёт RAG-функциональность для табличных данных без написания кода.
Когда ИИ полезен, а когда нет
ИИ ускоряет рутину: первичный анализ, генерацию шаблонного кода, интерпретацию результатов на естественном языке. Он не заменяет аналитика в задачах, требующих доменной экспертизы, проверки статистической значимости и принятия решений на основе данных. Используйте LLM как инструмент, а не как оракула — и проверяйте каждый результат.
Python-стек для ИИ-анализа данных
| Компонент | Библиотека | Назначение |
|---|---|---|
| Обработка данных | pandas, polars | Манипуляция таблицами |
| Визуализация | matplotlib, plotly, seaborn | Графики и дашборды |
| ML классические | scikit-learn, xgboost | Классификация, регрессия |
| Deep Learning | PyTorch, TensorFlow | Нейросети |
| LLM интеграция | langchain, llama-index | RAG, агенты для данных |
| ИИ-анализ таблиц | PandasAI, LangChain CSV Agent | NL запросы к данным |
PandasAI: разговор с данными на естественном языке
PandasAI — библиотека, позволяющая задавать вопросы к DataFrame на естественном языке. Под капотом конвертирует NL-запрос в pandas-код через LLM и выполняет его.
from pandasai import SmartDataframe
from pandasai.llm import OpenAI
import pandas as pd
df = pd.read_csv('sales_data.csv')
llm = OpenAI(api_token='sk-...')
sdf = SmartDataframe(df, config={'llm': llm})
# Задаём вопросы на русском
print(sdf.chat('Какой регион показал наибольший рост продаж в Q4?'))
print(sdf.chat('Постройте топ-10 продуктов по выручке'))Code Interpreter: ChatGPT как аналитик
ChatGPT с Code Interpreter (Advanced Data Analysis) позволяет загрузить CSV/Excel и анализировать данные через диалог. Возможности: построение графиков, статистический анализ, очистка данных, обнаружение аномалий, прогнозирование трендов — всё через естественный язык. Аналогичная функциональность есть в Claude (Projects) и Google Gemini.
Автоматизация отчётности
Типичный workflow автоматизированной отчётности с LLM:
- Загрузка данных из БД / API (pandas)
- Расчёт ключевых метрик (python)
- Передача метрик в LLM с промптом: «Проанализируй и напиши executive summary»
- LLM генерирует текстовую интерпретацию + выводы
- Автоматическая рассылка отчёта в Telegram/Slack/Email
Такой пайплайн сокращает время подготовки еженедельного отчёта с 2–3 часов до 5 минут.
Anomaly Detection с LLM
Классические методы аномалий (Z-score, IQR, Isolation Forest) хороши для статистических выбросов. LLM добавляет контекстуальный анализ: «Продажи упали на 40% в понедельник — причина: официальный праздник или реальная проблема?» Комбинация Isolation Forest (нашёл аномалию) + GPT-4o (объяснил причину) даёт систему, которую понимают менеджеры без технического бэкграунда.