Как AI-агенты ускоряют работу с данными: генерация кода pandas/matplotlib, автокорреляция, дашборды.
# Установка зависимостей pip install pandas matplotlib seaborn scikit-learn langchain langchain-openai from langchain.agents import create_pandas_dataframe_agent from langchain_openai import ChatOpenAI import pandas as pd # Загружаем датасет df = pd.read_csv("sales_data_2025.csv") # Создаём pandas-агента llm = ChatOpenAI(model="gpt-4o", temperature=0) agent = create_pandas_dataframe_agent( llm, df, verbose=True, allow_dangerous_code=True, agent_executor_kwargs={"handle_parsing_errors": True} ) # Задаём вопрос на естественном языке response = agent.invoke( "Какие 3 категории товаров принесли больше всего выручки в Q3?" ) print(response["output"])
import pandas as pd import numpy as np # Загрузка и базовая статистика через агента df = pd.read_csv("sales_data_2025.csv") # Автоматический EDA-отчёт через агента queries = [ "Сколько строк и столбцов в датасете?", "Покажи типы данных всех колонок", "Есть ли пропущенные значения? В каких колонках?", "Выведи базовую статистику (mean, std, min, max) для числовых колонок", "Какие уникальные значения в колонке 'category' и сколько их?", ] for q in queries: result = agent.invoke(q) print(f"\n📊 {q}") print(result["output"]) # Вывод агента (пример): # 📊 Сколько строк и столбцов в датасете? # В датасете 15,432 строки и 12 столбцов. # Колонки: date, product_id, category, region, quantity, # unit_price, revenue, cost, profit, customer_segment, # discount_applied, payment_method
import matplotlib.pyplot as plt import seaborn as sns # Агент генерирует код для визуализации viz_prompt = """ Построй столбчатую диаграмму (bar chart) выручки по категориям товаров. Используй библиотеки matplotlib и seaborn. Цвета: синяя гамма, размер 12x6. Сохрани график в 'revenue_by_category.png'. """ agent.invoke(viz_prompt) # Альтернативно — агент с полным доступом к pandas/matplotlib from langchain.experimental import PandasDataFrameOutputParser advanced_queries = [ "Построй boxplot прибыли по регионам", "Покажи временной ряд выручки по месяцам с линией тренда", "Создай scatter plot: цена vs количество, раскрась по категории", "Построй pie chart распределения customer_segment", ] for q in advanced_queries: print(f"\n🎨 {q}") agent.invoke(q) plt.tight_layout() plt.savefig(f"plot_{q[:20].replace(' ','_')}.png", dpi=150) plt.close()
from sklearn.preprocessing import LabelEncoder import numpy as np # Агент находит корреляции между переменными corr_prompt = """ Выполни корреляционный анализ: 1. Выдели только числовые колонки 2. Построй корреляционную матрицу (correlation matrix) 3. Найди топ-5 пар с самой сильной корреляцией (положительной и отрицательной) 4. Построй heatmap размером 10x8 с аннотациями 5. Сохрани как 'correlation_heatmap.png' """ agent.invoke(corr_prompt) # Ручной альтернативный код, который сгенерирует агент: numeric_cols = df.select_dtypes(include=[np.number]).columns corr_matrix = df[numeric_cols].corr() # Топ-5 корреляций corr_pairs = corr_matrix.unstack().sort_values(ascending=False) corr_pairs = corr_pairs[corr_pairs < 1.0] # Убираем self-correlation print("Топ-5 корреляций:") print(corr_pairs.head(5)) # Heatmap plt.figure(figsize=(10, 8)) sns.heatmap(corr_matrix, annot=True, cmap="coolwarm", center=0, fmt=".2f", linewidths=0.5) plt.title("Correlation Matrix — Sales Data 2025", fontsize=14) plt.tight_layout() plt.savefig("correlation_heatmap.png", dpi=150)
# Агент генерирует полноценный markdown-отчёт report_prompt = """ Сгенерируй markdown-отчёт по анализу данных, включи: 1. ## Общая статистика — количество записей, даты, ключевые метрики 2. ## Топ-3 категории по выручке — таблица с цифрами 3. ## Топ-5 корреляций — таблица (Variable 1, Variable 2, Correlation) 4. ## Графики — список сгенерированных графиков 5. ## Инсайты и рекомендации — 5 ключевых выводов Сохрани результат в report.md """ response = agent.invoke(report_prompt) report = response["output"] # Сохраняем отчёт with open("report.md", "w", encoding="utf-8") as f: f.write(report) print("✅ Отчёт сохранён в report.md") # Агент также может генерировать HTML-дашборд dashboard_prompt = """ Создай простой HTML-дашборд со встроенными графиками (base64). Включи: заголовок, 2-3 ключевые метрики крупным шрифтом, таблицу топ-продуктов и корреляционный heatmap. """
# Установка Jupyter AI Assistant pip install jupyter-ai langchain-openai # В ячейке Jupyter Notebook: # Магическая команда для AI-помощника # %%ai chatgpt -m gpt-4o # Проанализируй DataFrame 'df' и предложи 5 визуализаций # Альтернативно — встроенный агент в ноутбуке: from langchain_openai import ChatOpenAI from langchain.agents import create_pandas_dataframe_agent llm = ChatOpenAI(model="gpt-4o", temperature=0) agent = create_pandas_dataframe_agent( llm, df, verbose=True, allow_dangerous_code=True ) # Интерактивный цикл вопрос-ответ while True: query = input("🤖 Задайте вопрос о данных (или 'exit'): ") if query.lower() == "exit": break response = agent.invoke(query) print(f"\n📊 Ответ: {response['output']}\n") # Пример взаимодействия: # 🤖 Задайте вопрос о данных: Покажи распределение выручки по регионам # 📊 Ответ: [агент строит график и выводит статистику]