ChatGPT как аналитик: 12 промтов, которые заменят часы работы с pandas, SQL и A/B-тестами

Почему аналитик данных и ChatGPT — это синергия

Аналитики данных тратят до 80% времени на подготовку и очистку данных, а не на сам анализ. ChatGPT способен ускорить рутинные задачи: написание SQL-запросов, генерацию кода на pandas, интерпретацию результатов A/B-тестов и даже создание визуализаций. Но чтобы получить качественный результат, нужны правильные промты.

В этой подборке — 12 проверенных промтов, которые я ежедневно использую в работе. Они покрывают весь цикл: от исследования данных до презентации выводов. Каждый промт сопровождается примером и готовым кодом.

1. Генерация SQL-запроса по описанию на естественном языке

Промт:

Ты — эксперт по SQL. Напиши запрос для базы данных PostgreSQL, который выведет топ-10 клиентов по сумме заказов за последние 3 месяца. Учти, что таблица orders содержит поля: order_id, customer_id, order_date, total_amount. Таблица customers: customer_id, name, email. Исключи отменённые заказы (status = 'cancelled'). Отсортируй по убыванию суммы и выведи имя, email и общую сумму.

Пример результата:

SELECT c.name, c.email, SUM(o.total_amount) AS total_spent
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE o.order_date >= NOW() - INTERVAL '3 months'
  AND o.status != 'cancelled'
GROUP BY c.customer_id, c.name, c.email
ORDER BY total_spent DESC
LIMIT 10;

Совет: Уточняйте СУБД (PostgreSQL, MySQL, BigQuery) — синтаксис отличается, особенно для работы с датами.

2. Оптимизация медленного SQL-запроса

Промт:

Этот запрос выполняется 30 секунд на таблице в 10 млн строк. Предложи способы оптимизации: добавь индексы, перепиши JOIN, используй оконные функции. Вот запрос:

SELECT * FROM sales s
LEFT JOIN products p ON s.product_id = p.id
WHERE s.sale_date BETWEEN '2026-01-01' AND '2026-09-30'
ORDER BY s.amount DESC;

Что вернёт ChatGPT:

  • Рекомендацию создать индекс на sales(sale_date, amount) и products(id).
  • Замену SELECT * на конкретные поля.
  • Предложение разбить запрос или использовать материализованное представление.

Пример оптимизированного запроса:

CREATE INDEX idx_sales_date_amount ON sales(sale_date, amount);
CREATE INDEX idx_products_id ON products(id);

SELECT s.sale_id, s.product_id, s.amount, p.name
FROM sales s
JOIN products p ON s.product_id = p.id
WHERE s.sale_date BETWEEN '2026-01-01' AND '2026-09-30'
ORDER BY s.amount DESC;

3. Быстрый анализ датафрейма с pandas

Промт:

Ты — аналитик данных. У меня есть датафрейм df с колонками: user_id, session_date, revenue, country. Напиши код на pandas, который:
1. Выведет базовую статистику по revenue (среднее, медиана, квартили).
2. Посчитает количество уникальных пользователей по странам.
3. Найдёт топ-5 стран по выручке.
4. Построит график распределения revenue.

Пример кода:

import pandas as pd
import matplotlib.pyplot as plt

# 1. Базовая статистика
print(df['revenue'].describe())

# 2. Уникальные пользователи по странам
users_by_country = df.groupby('country')['user_id'].nunique().sort_values(ascending=False)
print(users_by_country)

# 3. Топ-5 стран по выручке
top_countries = df.groupby('country')['revenue'].sum().nlargest(5)
print(top_countries)

# 4. Гистограмма распределения
plt.hist(df['revenue'], bins=50)
plt.title('Распределение выручки')
plt.show()

4. Очистка данных: обработка пропусков и выбросов

Промт:

В датафрейме df есть пропуски в колонках age и income, а также выбросы в income (значения больше 1 млн). Предложи стратегию очистки: заполни пропуски медианой для age и средней для income, удали выбросы. Напиши код.

Пример кода:

df['age'].fillna(df['age'].median(), inplace=True)
df['income'].fillna(df['income'].mean(), inplace=True)
df = df[df['income'] <= 1_000_000]

Важно: Всегда проверяйте, не искажает ли заполнение пропусков распределение.

5. Сводная таблица (pivot table) за 10 секунд

Промт:

Создай сводную таблицу: строки — месяцы (из колонки order_date), столбцы — категории товаров, значения — сумма продаж. Используй pandas.

Пример:

pivot = df.pivot_table(index=pd.Grouper(key='order_date', freq='M'),
                       columns='category',
                       values='sales',
                       aggfunc='sum')
print(pivot)

6. Визуализация: график тренда с прогнозом

Промт:

Построй линейный график ежедневной выручки за последние 90 дней. Добавь скользящее среднее за 7 дней и линию тренда. Используй matplotlib.

Пример кода:

import matplotlib.pyplot as plt
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
daily = df.resample('D')['revenue'].sum()
rolling = daily.rolling(7).mean()
plt.plot(daily, label='Выручка')
plt.plot(rolling, label='Скользящее среднее (7 дней)', color='red')
plt.legend()
plt.show()

7. Статистический тест: проверка гипотезы

Промт:

У меня есть две выборки: контрольная (n=1000, конверсия 5%) и тестовая (n=1000, конверсия 6%). Проверь, значимо ли различие на уровне alpha=0.05. Используй z-тест для пропорций. Напиши код на Python.

Пример кода:

from statsmodels.stats.proportion import proportions_ztest
count = [50, 60]  # 5% от 1000 и 6% от 1000
nobs = [1000, 1000]
stat, pval = proportions_ztest(count, nobs)
print(f'p-value: {pval:.4f}')
if pval < 0.05:
    print('Различие значимо')
else:
    print('Различие не значимо')

8. Расчёт размера выборки для A/B-теста

Промт:

Сколько нужно наблюдений в каждой группе, чтобы обнаружить рост конверсии с 5% до 5.5% при мощности 80% и alpha=0.05? Напиши формулу и код.

Пример:

from statsmodels.stats.power import zt_ind_solve_power
from statsmodels.stats.proportion import proportion_effectsize

effect_size = proportion_effectsize(0.055, 0.05)
n = zt_ind_solve_power(effect_size=effect_size, alpha=0.05, power=0.8)
print(f'Нужно по {int(n)+1} наблюдений в каждой группе')

9. Интерпретация результатов A/B-теста

Промт:

Объясни простыми словами, что означает p-value = 0.03 в A/B-тесте, где тестовая группа показала конверсию 6% против 5% в контрольной. Можно ли внедрять изменение?

Ответ ChatGPT: p-value = 0.03 означает, что если бы разницы не было, мы бы увидели такое или более экстремальное различие с вероятностью 3%. Поскольку это меньше 0.05, разница статистически значима. Однако стоит проверить доверительный интервал и практическую значимость (рост на 1 п.п. может быть недостаточным для окупаемости).

10. Автоматизация отчёта: Excel + pandas

Промт:

Напиши скрипт, который читает данные из Excel, делает сводку по продажам за месяц, строит график и сохраняет результат в новый Excel-файл с двумя листами: «Данные» и «График».

Пример кода:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_excel('sales.xlsx')
summary = df.groupby('category')['amount'].sum().reset_index()

fig, ax = plt.subplots()
ax.bar(summary['category'], summary['amount'])
plt.savefig('chart.png')

with pd.ExcelWriter('report.xlsx') as writer:
    summary.to_excel(writer, sheet_name='Данные', index=False)
    # Вставка графика — через openpyxl

11. Поиск аномалий в данных

Промт:

В датафрейме df с колонками timestamp, value найди аномалии с помощью метода межквартильного размаха (IQR). Выведи строки с выбросами.

Пример кода:

Q1 = df['value'].quantile(0.25)
Q3 = df['value'].quantile(0.75)
IQR = Q3 - Q1
lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR
outliers = df[(df['value'] < lower) | (df['value'] > upper)]
print(outliers)

12. Генерация синтетических данных для тестов

Промт:

Сгенерируй датафрейм с 1000 строк и колонками: user_id (целые), age (18-70), country (5 стран), revenue (нормальное распределение, среднее 1000, std 200). Используй numpy и pandas.

Пример кода:

import numpy as np
import pandas as pd

np.random.seed(42)
df = pd.DataFrame({
    'user_id': range(1, 1001),
    'age': np.random.randint(18, 71, 1000),
    'country': np.random.choice(['US', 'UK', 'DE', 'FR', 'JP'], 1000),
    'revenue': np.random.normal(1000, 200, 1000).round(2)
})

Сравнение промтов по сложности и выгоде

Промт Сложность Экономия времени
SQL-запрос по описанию Низкая 10–15 мин
Оптимизация SQL Средняя 30–60 мин
pandas-анализ Низкая 20 мин
Очистка данных Средняя 30 мин
A/B-тест: расчёт размера выборки Высокая 1–2 часа

Как внедрять промты в рабочий процесс

  1. Начните с простых задач: генерация SQL и базовый pandas.
  2. Проверяйте код: ChatGPT может ошибаться в синтаксисе или логике.
  3. Уточняйте контекст: чем больше деталей (тип БД, версия pandas), тем точнее результат.
  4. Итерации: просите улучшить, оптимизировать или объяснить код.

Что дальше?

Используйте эти промты как шаблоны, адаптируя под свои данные. Помните: ChatGPT — не замена аналитика, а усилитель. Он берёт на себя рутину, оставляя вам время для интерпретации и принятия решений. Попробуйте первые три промта уже сегодня — и вы удивитесь, насколько быстрее пойдёт работа.

Полезные ссылки:
- Документация pandas
- PostgreSQL: оптимизация запросов
- Statsmodels: A/B тесты

← Все статьи

Комментарии

Читайте также

Human mathematicians are being outcounterexampled: как AI переигрывает математиков в их собственной игре

20 июля 2026

От сырых данных до ML-модели: 14 промтов, которые заменят половину работы дата-сайентиста

20 августа 2026

От новичка до продавца: почему курс «Wildberries и Ozon — Электронная коммерция» — ваш быстрый путь к мастерству на маркетплейсах

16 июля 2026

Как за 4 месяца стать Junior 3D-художником: обзор курса «3D-моделирование в Blender» на Asibiont

18 июля 2026

Интеграция Google Ads с AI: Автоматизация рекламных кампаний без кода с ASI Biont

21 июля 2026

От ноутбука до продакшена: как курс ML in Production на asibiont.com трансформирует навыки MLOps

25 июня 2026

От хаоса к автоматизации: как инженер-робототехник превратил IoT-тестирование в конвейер с помощью ИИ-промтов

22 августа 2026

Почему AI-приложения проваливаются в продакшене (и как Google решил эту проблему)

23 июля 2026

Освоение стандартов кибербезопасности: практическое руководство по ISO 27001, NIST и PCI DSS с обучением на основе ИИ

5 июля 2026