10 промтов для Data Science: анализ данных, визуализация, Pandas

Введение

Data Science — это не только сложные алгоритмы, но и умение быстро «подружиться» с данными. Pandas, Matplotlib и Seaborn стали стандартом де-факто для исследовательского анализа данных (EDA). Однако каждый раз писать один и тот же код для загрузки, очистки и визуализации — терять время. Промты (готовые шаблоны кода) позволяют ускорить рутину и сосредоточиться на интерпретации результатов. В этой подборке — 10 промтов, которые покрывают 80% повседневных задач аналитика: от разведочного анализа до сложных визуализаций. Каждый промт снабжён примером и пояснением.

Для кого эта статья: начинающие и опытные дата-сайентисты, аналитики, инженеры данных, которые хотят повысить свою продуктивность.


1. Быстрый обзор структуры данных

Задача: Понять типы столбцов, количество пропусков и базовую статистику.

Промт:

import pandas as pd

df = pd.read_csv('data.csv')
print(df.info())
print(df.describe(include='all'))
print(df.head(10))

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

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10000 entries, 0 to 9999
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   customer_id  10000 non-null  int64  
 1   age          9850 non-null   float64
...

Промт сразу показывает, где есть пропуски, какие столбцы числовые, а какие — категориальные. Это первый шаг перед любой очисткой.


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

Задача: Заполнить или удалить пропуски в зависимости от контекста.

Промт:

# Удаление строк с пропусками в ключевых столбцах
df.dropna(subset=['age', 'income'], inplace=True)

# Заполнение числовых столбцов медианой
for col in ['age', 'income']:
    df[col].fillna(df[col].median(), inplace=True)

# Заполнение категориальных столбцов модой
for col in ['education', 'city']:
    df[col].fillna(df[col].mode()[0], inplace=True)

Пример:
Допустим, в данных о клиентах 5% пропусков по возрасту. Использование медианы сохраняет распределение, а удаление строк с пропусками по income допустимо, если таких строк меньше 1%.


3. Группировка и агрегация

Задача: Посчитать средние продажи по категориям товаров.

Промт:

df_grouped = df.groupby('category').agg({
    'sales': ['mean', 'sum', 'count'],
    'price': 'median'
}).reset_index()
df_grouped.columns = ['category', 'avg_sales', 'total_sales', 'num_transactions', 'median_price']
print(df_grouped.head())

Результат:

  category  avg_sales  total_sales  num_transactions  median_price
0  Electronics   1250.5       25000                20           799
1  Clothing       340.2        6804                20           599
...

Этот приём полезен для построения дашбордов и отчётов.


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

Задача: Понять форму распределения признака и выбросы.

Промт:

import matplotlib.pyplot as plt
import seaborn as sns

fig, axes = plt.subplots(1, 2, figsize=(12, 4))
sns.histplot(df['age'], bins=30, kde=True, ax=axes[0])
axes[0].set_title('Распределение возраста')
sns.boxplot(x='category', y='price', data=df, ax=axes[1])
axes[1].set_title('Цены по категориям')
plt.tight_layout()
plt.show()

Результат: Гистограмма с KDE показывает, что возраст клиентов имеет левостороннюю асимметрию. Boxplot выявляет выбросы в категории «Электроника».


5. Корреляционный анализ и heatmap

Задача: Оценить взаимосвязи между числовыми признаками.

Промт:

import numpy as np

corr_matrix = df.select_dtypes(include=[np.number]).corr()
plt.figure(figsize=(10, 8))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0, fmt='.2f')
plt.title('Корреляционная матрица')
plt.show()

Пример интерпретации: Высокая корреляция (0.85) между age и years_of_experience может указывать на мультиколлинеарность, которую следует учесть в модели.


6. Фильтрация и условный выбор

Задача: Выделить подмножество данных по сложному условию.

Промт:

# Клиенты старше 40 лет с доходом выше медианы и purchase > 3
high_value = df[(df['age'] > 40) & 
                (df['income'] > df['income'].median()) & 
                (df['purchase_count'] > 3)]
print(f'Найдено {len(high_value)} клиентов')

Результат: Промт позволяет быстро сегментировать аудиторию для таргетированных предложений.


7. Применение пользовательских функций

Задача: Преобразовать столбец с датами в формат с извлечением дня недели.

Промт:

def get_weekday(date_str):
    dt = pd.to_datetime(date_str, format='%Y-%m-%d')
    return dt.day_name()

df['weekday'] = df['purchase_date'].apply(get_weekday)
print(df[['purchase_date', 'weekday']].head())

Пример: Выяснили, что пик продаж приходится на пятницу — это влияет на планирование рекламных кампаний.


8. Временные ряды: ресемплинг и скользящее среднее

Задача: Сгладить дневные колебания продаж и увидеть тренд.

Промт:

df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
weekly_sales = df['sales'].resample('W').sum()
weekly_sales_smooth = weekly_sales.rolling(window=4).mean()  # месяц

plt.figure(figsize=(12, 5))
plt.plot(weekly_sales, label='Недельные продажи', alpha=0.5)
plt.plot(weekly_sales_smooth, label='Скользящее среднее (4 недели)', linewidth=2)
plt.legend()
plt.show()

Результат: График показывает чёткий восходящий тренд, несмотря на шум.


9. Сводные таблицы (pivot_table)

Задача: Построить матрицу средних продаж по регионам и месяцам.

Промт:

pivot = df.pivot_table(values='sales', index='region', columns='month', aggfunc='mean', fill_value=0)
print(pivot.head())

Результат:

month       Jan   Feb   Mar   Apr
region                           
North      1200  1150  1300  1400
South       980  1010  1050  1100
...

Сводная таблица — мощный инструмент для многомерного анализа без написания сложных циклов.


10. Сохранение результатов в разных форматах

Задача: Экспортировать отчёт в Excel с несколькими листами.

Промт:

with pd.ExcelWriter('report.xlsx', engine='openpyxl') as writer:
    df_summary.to_excel(writer, sheet_name='Summary', index=False)
    pivot.to_excel(writer, sheet_name='Pivot')
    weekly_sales.to_excel(writer, sheet_name='Weekly_Sales')

Пример: Коллеги могут открыть файл без Python и работать с данными в привычном интерфейсе.


Сравнение инструментов визуализации

В работе с промтами часто возникает вопрос: что выбрать — Matplotlib или Seaborn? Краткое сравнение:

Критерий Matplotlib Seaborn
Гибкость Высокая (контроль каждой детали) Средняя (быстрые высокоуровневые графики)
Красота по умолчанию Требуется настройка Привлекательные стили из коробки
Статистические графики Базовые (hist, box) Встроенные (violin, kde, pairplot)
Интеграция с Pandas Прямая поддержка DataFrame.plot() Работает с DataFrames напрямую

Рекомендация: Используйте Seaborn для разведочного анализа и Matplotlib — для тонкой настройки отчётов.


Заключение

Представленные 10 промтов покрывают ключевые этапы работы с данными: от загрузки и очистки до разведочного анализа и визуализации. Скопируйте их в свой Jupyter Notebook и адаптируйте под свои датасеты — это сэкономит часы рутинного кода. Помните, что главное в Data Science — не количество строк, а качество инсайтов. Промты лишь инструмент, а интерпретация результатов остаётся за вами.

Дальнейшие шаги: попробуйте объединить несколько промтов в пайплайн, например очистку → группировку → тепловую карту. Документация Pandas (pandas.pydata.org/docs) и Seaborn (seaborn.pydata.org) — ваши лучшие друзья.

Удачного анализа!

← Все статьи

Комментарии

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

Наука о данных с нуля: ваш путь на основе ИИ к Python, машинному обучению и самым востребованным навыкам 2026 года

28 июля 2026

Утечка токенов OpenAI на Hugging Face: новый виток дебатов о согласовании и контроле ИИ

28 июля 2026

Как автоматизировать сверку платежей Т-Банка (Тинькофф) с помощью ИИ – без необходимости писать код

28 июля 2026

Как новичку начать работу с GitHub Copilot: полное руководство по приложению

28 июля 2026

Деловой английский в 2026 году: почему обучение на основе ИИ превосходит традиционные курсы (на 35% быстрее, на 50% дешевле)

28 июля 2026

Как перейти от бытового английского к академическому: курс Cambridge Lower Secondary English as a Second Language (0876) на asibiont.com

28 июля 2026

Как подключить GPS/GLONASS трекер к AI-агенту: интеграция NMEA через COM-порт с ASI Biont

28 июля 2026

Освоение Cambridge IGCSE Physics (0625) с помощью ИИ: пример адаптивного обучения

28 июля 2026

Opus 5 против SlopCodeBench: как прошёл бенчмарк новой эры Vibe Coding

27 июля 2026