и посмотреть медиа
Data analysis - DA SQL
и посмотреть медиа
Анализ данных: SQL, Python.
Анализ данных: SQL, Python.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Про анализ данных: базы данных, SQL, Python и другое для аналитиков.
Как провести анализ динамики Продолжая затронутую ранее тему, расскажу немного подробнее о том, как именно построить динамику с помощью 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}") Это даст нам сводные результаты по датасету или сегменту. Если мы хотим понять, как менялось это время, например, из месяца в месяц, то можно просто задать ограничения на входящие данные и получать эту статистику за каждый месяц (а не за весь период как сейчас), сравнивая потом эти месяца между собой.
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!