Каждый, кто хоть раз открывал датасет с сотней колонок и миллионом строк, знает это чувство: вроде бы pandas установлен, но с чего начать — непонятно. А ещё есть дедлайн, заказчик и гора «грязных» данных. По данным опроса Anaconda (State of Data Science 2023), более 40% времени аналитики тратят на подготовку и очистку данных, а не на моделирование. Хорошая новость: LLM вроде ChatGPT отлично справляются с рутиной, если правильно формулировать промты.
В этой подборке — 14 проверенных промтов, которые превращают ChatGPT в ассистента аналитика. Мы разберём три уровня: базовые (для быстрого старта), продвинутые (для сложных преобразований) и экспертные (для объяснения результатов и оптимизации). Каждый промт сопровождается примером кода и пояснением, как его адаптировать под свои задачи.
Базовые промты: разведка и первые шаги
1. Быстрый обзор датасета
Задача: за 2 минуты понять, что в данных, какие типы, есть ли пропуски.
Промт:
Ты — аналитик данных. У меня есть DataFrame df с такими колонками: [список]. Напиши код на pandas, который выведет:
- первые 5 строк
- info()
- describe() для числовых и категориальных колонок
- количество пропусков по колонкам в процентах
- количество уникальных значений для каждой колонки
Оформи вывод в виде читаемых таблиц.
Пример результата: ChatGPT сгенерирует функцию, которая вернёт словарь с несколькими DataFrame. Вы сразу увидите, что, например, в колонке age 15% пропусков, а city имеет 200 уникальных значений — потенциальный кандидат на категоризацию.
2. Генерация синтетического датасета для тестов
Задача: нужны тестовые данные, чтобы отладить пайплайн, не трогая продакшн.
Промт:
Создай синтетический датасет на 10 000 строк с колонками: user_id (int), signup_date (datetime), revenue (float, 0-1000), plan (категориальный: free, basic, pro). Добавь 5% пропусков в revenue и выбросы. Верни код с фиксированным seed.
Пример результата:
import numpy as np
import pandas as pd
np.random.seed(42)
n = 10000
df = pd.DataFrame({
'user_id': np.arange(n),
'signup_date': pd.date_range('2023-01-01', periods=n, freq='H'),
'revenue': np.random.uniform(0, 1000, n),
'plan': np.random.choice(['free', 'basic', 'pro'], n, p=[0.6, 0.3, 0.1])
})
df.loc[df.sample(frac=0.05).index, 'revenue'] = np.nan
3. Автоматический отчёт с pandas-profiling
Задача: получить HTML-отчёт для команды без ручного кодинга.
Промт:
Напиши код, который использует pandas-profiling (ydata-profiling) для генерации отчёта по df и сохраняет его в report.html. Добавь обработку ошибок, если библиотека не установлена.
Пример результата: ChatGPT предложит установку через pip и обёртку с try/except. Отчёт включает корреляции, распределения и предупреждения о качестве данных.
Продвинутые промты: очистка и преобразования
4. Умная обработка пропусков
Задача: заполнить пропуски не средним, а с учётом групп.
Промт:
В df есть колонки: age, income, education. Пропуски в income. Заполни их медианой по группе education, а если группа пуста — общей медианой. Напиши функцию с пояснениями.
Пример результата:
def fill_income(df):
median_by_edu = df.groupby('education')['income'].transform('median')
overall_median = df['income'].median()
df['income'] = df['income'].fillna(median_by_edu).fillna(overall_median)
return df
5. Детекция и замена выбросов
Задача: убрать выбросы, не потеряв важные данные.
Промт:
Напиши код, который находит выбросы в колонке revenue методом IQR и заменяет их на границы (winsorization). Выведи, сколько значений было изменено.
Пример результата: ChatGPT сгенерирует расчёт квартилей, границ и clip. Вы увидите, что 2.3% значений были скорректированы — это безопаснее, чем удаление строк.
6. Парсинг дат из строк
Задача: преобразовать строки в datetime с обработкой нестандартных форматов.
Промт:
В колонке date строки вида '2023-01-01', '01/02/2023', 'Jan 3, 2023'. Напиши функцию, которая приводит их к datetime, используя dateutil.parser с fallback.
Пример результата:
from dateutil import parser
def parse_date(s):
try:
return parser.parse(s)
except:
return pd.NaT
df['date_parsed'] = df['date'].apply(parse_date)
7. Группировка и агрегация с несколькими метриками
Задача: получить сводную таблицу по группам.
Промт:
Сгруппируй df по user_id и посчитай: количество заказов, сумму revenue, средний чек, дату последнего заказа. Отсортируй по сумме revenue.
Пример результата:
agg = df.groupby('user_id').agg(
orders=('order_id', 'count'),
total_revenue=('revenue', 'sum'),
avg_check=('revenue', 'mean'),
last_order=('order_date', 'max')
).sort_values('total_revenue', ascending=False)
8. Слияние датасетов с разными ключами
Задача: объединить две таблицы, где ключи называются по-разному.
Промт:
Есть df1 с колонкой user_id и df2 с колонкой uid. Объедини их с сохранением всех строк из df1, добавь суффиксы _left и _right. Выведи, сколько строк не нашли соответствия.
Пример результата: ChatGPT напишет merge с left_on='user_id', right_on='uid', how='left' и подсчитает NaN в ключевых колонках.
Экспертные промты: объяснение и оптимизация
9. Объяснение корреляций для заказчика
Задача: перевести матрицу корреляций на бизнес-язык.
Промт:
У меня есть матрица корреляций df.corr(). Напиши текст для отчёта, который объяснит три самые сильные корреляции (не техническим языком). Избегай слова «корреляция», используй «связь».
Пример результата: ChatGPT сгенерирует абзац: «Чем выше доход клиента, тем чаще он выбирает премиум-план (связь 0.78). Это значит, что для увеличения продаж премиума стоит фокусироваться на сегменте с доходом выше среднего».
10. Оптимизация памяти DataFrame
Задача: уменьшить потребление памяти без потери данных.
Промт:
Напиши функцию, которая автоматически понижает типы: int64 → int32/int16, float64 → float32, object → category для колонок с малым числом уникальных. Выведи, сколько памяти сэкономлено.
Пример результата:
def reduce_mem(df):
start_mem = df.memory_usage().sum() / 1024**2
for col in df.columns:
if df[col].dtype == 'int64':
df[col] = pd.to_numeric(df[col], downcast='integer')
elif df[col].dtype == 'float64':
df[col] = pd.to_numeric(df[col], downcast='float')
elif df[col].dtype == 'object':
if df[col].nunique() / len(df) < 0.5:
df[col] = df[col].astype('category')
end_mem = df.memory_usage().sum() / 1024**2
print(f'Память: {start_mem:.2f} → {end_mem:.2f} MB')
return df
11. Визуализация: график, который поймёт заказчик
Задача: построить график, который сразу показывает инсайт.
Промт:
Построй график распределения revenue по планам (free, basic, pro) с помощью seaborn. Добавь подписи, заголовок и аннотацию с медианами. Сохрани в PNG.
Пример результата:
import seaborn as sns
import matplotlib.pyplot as plt
sns.boxplot(data=df, x='plan', y='revenue')
plt.title('Распределение выручки по планам')
plt.annotate('Медиана pro: $500', xy=(2, 500), xytext=(2.2, 800),
arrowprops=dict(arrowstyle='->'))
plt.savefig('revenue_by_plan.png', dpi=150)
12. Интерактивный дашборд на Plotly
Задача: сделать график, который можно покрутить.
Промт:
Создай интерактивный scatter plot с Plotly Express: x=date, y=revenue, цвет по plan, размер по количеству заказов. Добавь hover-данные и слайдер по датам.
Пример результата: ChatGPT сгенерирует код с px.scatter и fig.update_layout(xaxis=dict(rangeslider=dict(visible=True))).
13. Пайплайн очистки в одну функцию
Задача: собрать все шаги очистки в воспроизводимый пайплайн.
Промт:
Объедини все шаги: обработка пропусков, выбросы, парсинг дат, понижение типов — в одну функцию clean_data(df). Добавь логирование каждого шага.
Пример результата: функция с print или logging на каждом этапе — удобно отлаживать и передавать коллегам.
14. Генерация тестов для пайплайна
Задача: убедиться, что очистка не ломает данные.
Промт:
Напиши 5 unit-тестов на функцию clean_data с использованием pytest: проверь, что пропуски заполнены, типы понижены, выбросы обработаны.
Пример результата: ChatGPT создаст тесты с фикстурами и assert. Это повышает надёжность и ускоряет рефакторинг.
Как использовать эти промты эффективно
Главное правило: чем конкретнее вы описываете контекст (названия колонок, типы, цель), тем точнее ответ. Не бойтесь уточнять: «Перепиши без использования lambda» или «Добавь обработку ошибок». ChatGPT не заменит аналитика, но снимет рутину, оставив время на интерпретацию и бизнес-выводы.
Попробуйте применить хотя бы три промта из этой подборки на своём текущем проекте — и вы удивитесь, сколько часов освободится. А если хотите системно прокачать навыки работы с данными и AI-инструментами, обратите внимание на практические курсы, где разбираются реальные кейсы. Главное — практика и ещё раз практика.
Комментарии