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
🔒Открыть пост
и посмотреть медиа
Как провести анализ динамики Продолжая затронутую ранее тему, расскажу немного подробнее о том, как именно построить динамику с помощью Python. 1️⃣Как проследить за изменением суммы и кол-ва транзакций и за изменением среднего баланса? Проще всего будет сгруппировать данные с помощью groupby по дате транзакции (key='TransactionDate'), рассчитав, соответственно, нужные нам метрики (сумму, кол-во, среднее...) и выбрав нужный интервал (пускай это будет неделя: freq='W'): import pandas as pd #Путь и первоначальная сортировка file_path = 'ПУТЬ.../bank_transactions.csv' df = pd.read_csv(file_path) df = df.sort_values('TransactionDate') #Группировка weekly_stats = df.groupby( pd.Grouper(key='TransactionDate', freq='W')).agg({ 'TransactionAmount': ['sum', 'count', 'mean'], 'CustAccountBalance': 'mean' }).round(2) weekly_stats.columns = [ 'Total_Amount', 'Transaction_Count', 'Avg_Transaction', 'Avg_Balance'] weekly_stats = weekly_stats.reset_index() print("Недельная статистика:") print(weekly_stats) В итоге получим агрегированные по неделям данные с расчетом общей суммы транзакций, их кол-ва, среднего размера транзакции и среднего размера баланса. Можно прикрутить к этому и расчет относительной и абсолютной динамики: weekly_growth = weekly_stats.set_index('TransactionDate').pct_change()*100 weekly_growth = weekly_growth.round(2) weekly_growth = weekly_growth.reset_index() print("\nНедельные приросты (%):") print(weekly_growth) weekly_abs_change = weekly_stats.set_index('TransactionDate').diff() weekly_abs_change = weekly_abs_change.reset_index() print("\nАбсолютные изменения:") print(weekly_abs_change) Всё это применимо как и к датасету в целом, так и к отдельно ранее рассчитанным сегментам. При необходимости можно также это всё визуализировать. 2️⃣Как выявить изменения временных паттернов? При анализе часовой активности логика тут примерно такая же: нужна группировка, но уже не по неделям, а по часам. Для этого нужно извлечь часы из времени транзакции и по этим часам сгруппировать датасет (или сегмент). # Извлекаем час из времени транзакции df['Hour'] = pd.to_datetime(df['TransactionTime'], format='%H:%M:%S').dt.hour # Количество транзакций по часам hourly_transactions = df.groupby('Hour').agg({ 'TransactionID': 'count', 'TransactionAmount': ['sum', 'mean'] }).round(2) hourly_transactions.columns = [ 'Transaction_Count', 'Total_Amount', 'Avg_Amount'] hourly_transactions = hourly_transactions.reset_index() print("Распределение транзакций по часам:") print(hourly_transactions) Очень похожим образом можно анализировать активность и по дням недели, и по кварталам, и по месяцам. Еще можно рассчитать среднее время между транзакциями для каждого клиента. Для этого выберем клиентов, у которых больше 1 транзакции, и в рамках этих клиентов отсортируем транзакции по их дате и времени, рассчитав среднюю разницу между ними. Получившиеся результаты (в секундах) можно преобразовать в дни и, соответственно, вывести результаты: customer_intervals = df.groupby('CustomerID').apply( lambda x: x.sort_values('TransactionDateTime')['TransactionDateTime'].diff().mean() if len(x) > 1 else pd.NaT ) customer_intervals_days = customer_intervals.dt.total_seconds() / (24 * 3600) interval_stats = { 'Avg_Days_Between_Transactions': customer_intervals_days.mean(), 'Median_Days_Between_Transactions': customer_intervals_days.median(), 'Min_Days_Between_Transactions': customer_intervals_days.min(), 'Max_Days_Between_Transactions': customer_intervals_days.max() } print("\nСтатистика времени между транзакциями (в днях):") for key, value in interval_stats.items(): print(f"{key}: {value:.2f}") Это даст нам сводные результаты по датасету или сегменту. Если мы хотим понять, как менялось это время, например, из месяца в месяц, то можно просто задать ограничения на входящие данные и получать эту статистику за каждый месяц (а не за весь период как сейчас), сравнивая потом эти месяца между собой.
Data analysis - DA SQL
Динамика подписчиков
+-0.5% за 30 дней
Текущие
1,700
Месяц назад
1,709
Средний рост
+0 / день
Обновлено
17 часов назад

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

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

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

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

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

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

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