Почему аналитик данных и 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 часа |
Как внедрять промты в рабочий процесс
- Начните с простых задач: генерация SQL и базовый pandas.
- Проверяйте код: ChatGPT может ошибаться в синтаксисе или логике.
- Уточняйте контекст: чем больше деталей (тип БД, версия pandas), тем точнее результат.
- Итерации: просите улучшить, оптимизировать или объяснить код.
Что дальше?
Используйте эти промты как шаблоны, адаптируя под свои данные. Помните: ChatGPT — не замена аналитика, а усилитель. Он берёт на себя рутину, оставляя вам время для интерпретации и принятия решений. Попробуйте первые три промта уже сегодня — и вы удивитесь, насколько быстрее пойдёт работа.
Полезные ссылки:
- Документация pandas
- PostgreSQL: оптимизация запросов
- Statsmodels: A/B тесты
Комментарии