Урок 8 из 16•20 мин
Навык анализа временных рядов
Цели урока
После прохождения этого урока вы сможете:
- 1Создать навык для анализа финансовых данных
- 2Добавить Python скрипты в навык
- 3Настроить визуализацию результатов
Анализ временных рядов
Временные ряды — это данные, упорядоченные по времени: курсы валют, продажи по дням, трафик на сайт. Создадим навык, который умеет анализировать такие данные.
Структура навыка
plaintext
time-series-analyst/
├── SKILL.md
├── analysis_methods.md
├── scripts/
│ ├── detect_trend.py
│ ├── find_anomalies.py
│ └── forecast.py
└── templates/
└── report_template.mdSKILL.md
markdown
# Time Series Analyst
## Description
Активируй при работе с данными временных рядов:
- Анализ трендов (рост, падение, стагнация)
- Поиск аномалий и выбросов
- Прогнозирование
- Сезонный анализ
## Instructions
### Входные данные
Ожидаемый формат CSV:
- Колонка date (YYYY-MM-DD)
- Одна или несколько колонок с числовыми значениями
### Анализ тренда
Для определения тренда используй скрипт @scripts/detect_trend.py
Интерпретация:
- slope > 0.05: растущий тренд
- slope < -0.05: падающий тренд
- иначе: боковой тренд (стагнация)
### Поиск аномалий
Используй @scripts/find_anomalies.py
Аномалия = значение отклоняется более чем на 2 стандартных отклонения
### Прогноз
Для прогноза на N дней используй @scripts/forecast.py
Предупреждай о точности: чем дальше прогноз, тем ниже точность
### Формат отчёта
Используй шаблон @templates/report_template.mdPython скрипт: detect_trend.py
python
"""
Скрипт определения тренда временного ряда.
Использование: python detect_trend.py data.csv value_column
"""
import sys
import pandas as pd
import numpy as np
from scipy import stats
def detect_trend(file_path: str, column: str) -> dict:
df = pd.read_csv(file_path, parse_dates=['date'])
df = df.sort_values('date')
# Линейная регрессия
x = np.arange(len(df))
y = df[column].values
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
# Определение типа тренда
if slope > 0.05:
trend_type = "растущий"
elif slope < -0.05:
trend_type = "падающий"
else:
trend_type = "боковой"
return {
"trend_type": trend_type,
"slope": round(slope, 4),
"r_squared": round(r_value**2, 4),
"p_value": round(p_value, 4),
"start_value": round(y[0], 2),
"end_value": round(y[-1], 2),
"change_percent": round((y[-1] - y[0]) / y[0] * 100, 2)
}
if __name__ == "__main__":
result = detect_trend(sys.argv[1], sys.argv[2])
print(result)Пример использования
Вы: Проанализируй продажи за последний квартал [прикрепляет sales_q4.csv]
Claude: [Активирует time-series-analyst]
[Запускает detect_trend.py]
📈 Анализ тренда продаж
Тренд: Растущий (+12.3% за квартал)
- R²: 0.87 (сильная корреляция)
- Начало периода: 1,234,000₽
- Конец периода: 1,386,000₽
Аномалии обнаружены:
- 2025-11-23: выброс вверх (+45% от нормы) — вероятно, распродажа
- 2025-12-01: провал (-30% от нормы) — технические проблемы?
Прогноз на январь:
~1,450,000₽ (±8%)
Claude: [Активирует time-series-analyst]
[Запускает detect_trend.py]
📈 Анализ тренда продаж
Тренд: Растущий (+12.3% за квартал)
- R²: 0.87 (сильная корреляция)
- Начало периода: 1,234,000₽
- Конец периода: 1,386,000₽
Аномалии обнаружены:
- 2025-11-23: выброс вверх (+45% от нормы) — вероятно, распродажа
- 2025-12-01: провал (-30% от нормы) — технические проблемы?
Прогноз на январь:
~1,450,000₽ (±8%)
Python скрипты в навыках позволяют выполнять сложные вычисления, которые сложно описать текстом. Агент сам запускает нужные скрипты через Bash.
Зачем добавлять Python скрипты в навык, если Claude умеет считать?
Вопросы для размышления
- •Какие вычисления в вашей работе требуют точности Python/R?
- •Какие метрики временных рядов важны для вашего бизнеса?
