и посмотреть медиа
Análisis de datos - DA SQL
и посмотреть медиа
Análisis de datos: SQL, Python.
Análisis de datos: SQL, Python.
bot de IA para clonar texto a voz y voz en Telegram. Cree audio utilizando la red neuronal de forma rápida y fácil.
Acerca del análisis de datos: bases de datos, SQL, Python y más para analistas.
Как провести корреляционный анализ Допустим, мы имеем датасет с банковскими транзакциями с информацией по клиентам, суммам, балансу, времени и т.д. На примере исследования гипотезы "Чем больше средний баланс клиента, тем больше его суммарные расходы" (упоминалось ранее) опишу, как можно проводить корреляционный анализ с помощью Python. 1️⃣Изначально посчитаем средний баланс и суммарные траты для каждого клиента c помощью обычной группировки (если нужно, то можно задать ограничение на временной период): import pandas as pd file_path = 'ПУТЬ.../bank_transactions.csv' df = pd.read_csv(file_path) stats = df.groupby('CustomerID').agg({ 'CustAccountBalance': 'mean', 'TransactionAmount': 'sum' }).rename(columns={ 'CustAccountBalance': 'avg_balance', 'TransactionAmount': 'total_spent' }) На выходе получим агрегированные по каждому клиенту данные, в которых будет указана общая сумма трат за всё время и средняя сумма баланса за это же время. 2️⃣Затем нужно посчитать коэффициент корреляции в рамках данных из п.1 и проверить эти результаты на статистическую значимость с помощью p_value. Возьмем корреляцию Спирмена, т.к. она устойчива к выбросам и не требует нормальности, а значит, для финансовых данных подходит лучше всего. from scipy.stats import spearmanr corr, pval = spearmanr(stats['avg_balance'], stats['total_spent']) print(corr, pval) Получим 2 числа: саму корреляцию и p_value. И если корреляция положительная и p_value < 0.05, значит, гипотеза поддерживается данными: есть статистически значимая связь между средним балансом и суммарными расходами. И, соответственно, чем выше коэффициент корреляции, тем связь будет сильнее. 3️⃣Для проверки гипотезы первых 2 пунктов может быть и достаточно. Но не лишним также будет еще построить тренд, чтобы посмотреть, как именно реагируют одни данные на изменения других. Для этого разделим датасет на сегменты по ранее рассчитанным средним балансам, условно на 5 групп: stats['balance_group'] = pd.qcut(stats['avg_balance'], q=5, labels=['Q1 (низкий)', 'Q2', 'Q3', 'Q4', 'Q5 (высокий)']) group_stats = stats.groupby('balance_group').agg({ 'avg_balance': 'mean', 'total_spent': 'mean' }).round(2) print(group_stats) Важно разделять сегменты по признакам из гипотезы (баланс), а не по, например, демографическим критериям. В итоге мы сожмем весь датасет до 5 групп, у каждой из которых будет выводится средний баланс по группе и общие траты по группе. 4️⃣Теперь считаем сам тренд. Для этого задаём группу Q1 как базис (самый низкий средний баланс) и считаем отношение суммы транзакций одной группы к другой (Q1/Q1, Q2/Q1, Q3/Q1 и т.д.): base_spent = group_stats['total_spent'].iloc[0] trend = [] for i in range(len(group_stats)): ratio = group_stats['total_spent'].iloc[i] / base_spent trend.append(ratio) print(trend) Результат получится в виде списка из 5 чисел, который всегда будет начинаться с 1. Он может многое показать: ▶️Например, если мы имеем плавный рост [1.0, 1.3, 1.7, 2.2, 3.0] (или снижение), то можно сделать вывод, что рост баланса стабильно влияет на изменение трат во всех диапазонах ▶️Резкий скачок (или снижение) [1.0, 1.8, 2.0, 2.1, 2.2] может показать, переход между какими группами наиболее влиятелен ▶️Если есть что-то наподобие такого [1.0, 1.2, 1.1, 1.8, 1.9] (небольшой рост, снижение, резкий скачок), то значит, что внутри датасета скрыты какие-то другие факторы, которые влияют на траты сильнее, чем рост баланса ▶️Если изменения незначительны [1.0, 1.1, 1.0, 1.2, 1.3], то, очевидно, никакой связи тут нет
Открыть канал и посмотреть медиаSolo los usuarios registrados pueden compartir su opinión.
¡Sé el primero en compartir tu experiencia con este recurso!