Logo
TGCATALOG
Каталог Подборки Блог
Data analysis - DA SQL

Data analysis - DA SQL

Анализ данных: SQL, Python.

Нет оценок
582
29.10.2026
582
29.10.2026
Нет оценок
582
29.10.2026
Безопасный переход через бот
О канале

Анализ данных: SQL, Python.

Подписчиков 1,700
Тематика Технологии
Язык Русский
Ссылка t.me/business_stats

Также рекомендуем

Kekaton AI | Озвучка и клон голоса
Kekaton AI | Озвучка и клон голоса
Бот

AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.

Описание

Про анализ данных: базы данных, SQL, Python и другое для аналитиков.

Последние посты

Data analysis - DA SQL
Data analysis - DA SQL
🔒Открыть пост
и посмотреть медиа
Выявление аномалий в данных с помощью скользящих средних В продолжение темы раскрою кейс о том, как выявлять аномалии в данных с использованием временных рядов, а конкретно - с помощью скользящих средних (MA): что это должны быть за данные и что за аномалии можно выявить таким способом. 🟠Вернемся к финансовым транзакциям. Для этого метода понадобится уже не просто размер операций, но еще дата и время каждой из этих операций. На основе этого будем применять: ▶️Простую MA (SMA) - среднее значение данных за фиксированный временной интервал. То есть, это как каждый день пересчитывать среднее значение за последние n дней. ▶️Взвешенную MA (WMA) - где более поздние значения имеют больше влияния (вес) на итоговое среднее. ▶️Экспоненциальную MA (EMA). EMA присваивает убывающие веса всем прошлым данным в зависимости от коэффициента (чем больше коэффициент, тем сильнее EMA реагирует на новые данные). 🟠Характер выявляемых аномалий на первый взгляд может быть похожим на аномалии, которые можно выявить стат методами - это отклонения от нормальных значений. Но различия есть: грубо говоря, стат методы выявляют аномалию на всей выборке (условно, платеж в 100 раз больше обычного), а временные ряды (в данном случае MA) учитывают именно нетипичные изменения в рамках "контекста", а не обособленное значение (например, резкий рост расходов). Выявим несколько аномалий: ▶️С помощью SMA, учитывая постепенно меняющиеся клиентские привычки, выявим, не было ли необычно крупного платежа за последнее время. ▶️С помощью WMA выявим, не было ли учащения кол-ва операций в последнее время. WMA из-за своих весов остро реагирует на самые последние скачки в данных. Также считается, что WMA лучше применять для дискретных данных, какими и являются данные о кол-ве транзакций. ▶️С помощью EMA можно выявлять примерно те же аномалии, как и с SMA, только EMA больше адаптирован для шумов и для реакции на последние изменения. 🟠Технически логика выявления аномалий такова: сначала считается среднее значение с помощью той или иной MA. Затем, прибавляя (и вычитая) к среднему 2 (иногда больше или меньше) стандартных отклонения, определяются верхняя и нижняя границы, значения за пределами которых - аномалии. Для начала передадим данные в df. Затем рассчитаем SMA, границы и определим значения, которые выходят за эти границы: import pandas as pd import numpy as np data = { 'date': ДАТЫ, 'amount': СУММА ТРАНЗАКЦИЙ, 'n_tr': КОЛ-ВО ТРАНЗАКЦИЙ } df = pd.DataFrame(data) df['sma'] = df['amount'].rolling(window=7).mean() df['sma_std'] = df['amount'].rolling(window=7).std() df['upper'] = df['sma'] + 2 * df['sma_std'] df['lower'] = df['sma'] - 2 * df['sma_std'] df['anomaly'] = (df['amount'] > df['upper']) | (df['amount'] < df['lower']) Для SMA считается среднее значение за последние 7 дней. Upper и lower - границы. В итоге выведутся суммы транзакций, которые в контексте ближайших 7 дней нетипичны. Для WMA присвоим веса [0.5, 0.25, 0.15, 0.07, 0.03] - последний день значим, затем с каждым днем вес снижается примерно в 2 раза. В сумме веса = 1. Применяться WMA будет для последних 5 дней: weights = np.array([0.5, 0.25, 0.15, 0.07, 0.03]) w_mean = lambda x: np.sum(weights * x) df['wma'] = df['n_tr'].rolling(window=5).apply(w_mean, raw=True) df['wma_std'] = df['n_tr'].rolling(window=5).std() df['upper'] = df['wma'] + 2 * df['wma_std'] df['lower'] = df['wma'] - 2 * df['wma_std'] df['anomaly'] = (df['n_tr'] > df['upper']) | (df['n_tr'] < df['lower']) По итогу получим актуальные нетипичные скачки в кол-ве транзакций. Для EMA используем коэф. alpha=0.3 - умеренная реакция на шумы. df['ema'] = df['amount'].ewm(alpha=0.3, adjust=False).mean() df['ema_std'] = df['amount'].ewm(alpha=0.3).std() df['upper'] = df['ema'] + 2 * df['ema_std'] df['lower'] = df['ema'] - 2 * df['ema_std'] df['anomaly'] = (df['amount'] > df['upper']) | (df['amount'] < df['lower']) По итогу получим аномалии с учетом сглаженного тренда, которые чувствительны к последним изменениям.
Data analysis - DA SQL
Динамика подписчиков
+-0.5% за 30 дней
Текущие
1,700
Месяц назад
1,709
Средний рост
+0 / день
Обновлено
18 часов назад

Отзывы о канале Data analysis - DA SQL

Авторизуйтесь, чтобы оставить отзыв

Только зарегистрированные пользователи могут делиться своим мнением.

Пока нет отзывов

Станьте первым, кто поделится своим впечатлением об этом ресурсе!

Похожие ресурсы

Loading
Переход на светлую тему
Главная Каталог Подборки Блог Вход