Выбранные данные и источник
Я выбрал датасет, который содержит анонимизированные данные о клиентах банка, их финансовой активности, транзакциях, кредитных лимитах и статусе (ушли из банка или остались).
Источник: датасет был взят из открытых данных Kaggle.com
Почему именно этот датасет?
В банковской сфере отток клиентов — одна из самых серьезных проблем.
Анализ позволяет определить факторы, влияющие на уход клиентов, и помочь банку разработать стратегию удержания.
Данные содержат финансовые и поведенческие характеристики, что позволяет сделать многоуровневый анализ.
Выбранные типы графиков и их цели
Ящик с усами (Boxplot) — чтобы изучить распределение транзакционной активности клиентов.
Гистограмма — для анализа кредитных лимитов. Столбчатую диаграмму — чтобы увидеть связь уровня образования и оттока.
Скрипичная диаграмма — для оценки использования кредитных средств.
Сложенные столбчатые диаграммы — для анализа уровня дохода.
Подготовка и анализ данных
- Импорт библиотек и загрузка данных. import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import numpy as np df = pd.read_csv ('BankChurners.csv')
- настройка отображения таблиц и вывод базовой информации для анализа. pd.set_option ('display.max_columns', None) pd.set_option ('display.width', 1000) print (» basic info») print (df.info ()) print (» heads») print (df.head ()) print (» Summary of numerical columns») print (df.describe ()) print (» Summary of categorical columns») print (df.describe (include=['object'])) print (» unique values») for col in df.select_dtypes (include=['object']).columns: print (f"{col}: {df[col].unique ()}») print (» Checking Class Distribution») print (df['Attrition_Flag'].value_counts (normalize=True) * 100) print (f"Duplicates check: {df.duplicated ().sum ()}»)
- Устанавливаем начальный стиль графиков sns.set_style («whitegrid») sns.set_palette («deep») plt.rcParams.update ({ 'font.size': 12, 'axes.titlesize': 14, 'axes.labelsize': 12, 'xtick.labelsize': 11, 'ytick.labelsize': 11, 'legend.fontsize': 12, 'figure.figsize': (10, 6), 'font.family': 'Arial' })
Стиль выбирался соответсвенно тематике: максимальная удобность и читаемость
Шрифт Arial удобный, читаемый и оффициальный.
Белый фон и сетка делают графики более читаемыми.
Гармоничные цвета помогают легко различать категории.
Аккуратное оформление приближает стиль к стандартам финансовой аналитики.
1. Интенсивность транзакций по статусу клиента
plt.figure () sns.boxplot (x='Attrition_Flag', y='Transaction_Intensity_Log', data=df) plt.title («Логарифм интенсивности транзакций по статусу клиента») plt.xlabel («Статус клиента») plt.ylabel («Логарифм интенсивности транзакций») plt.savefig ('transaction_intensity.png', dpi=300, bbox_inches='tight') plt.close ()
Ушедшие клиенты в среднем совершают меньше транзакций в месяц.
Высокая активность связана с лояльностью клиентов.
2. Распределение кредитного лимита
plt.figure () sns.histplot (df['Credit_Limit'], kde=True, color='blue') plt.title («Распределение кредитного лимита») plt.xlabel («Кредитный лимит») plt.ylabel («Частота») plt.savefig ('credit_limit_distribution.png', dpi=300, bbox_inches='tight') plt.close ()
Большинство клиентов имеют кредитный лимит ниже $10,000.
Некоторые клиенты с низким лимитом уходят из банка.
3. Уровень образования по статусу клиента
plt.figure () sns.countplot (x='Education_Level', hue='Attrition_Flag', data=df, palette='Set3') plt.title («Уровень образования по статусу клиента») plt.xlabel («Уровень образования») plt.ylabel («Количество») plt.xticks (rotation=45) plt.savefig ('education_level_by_attrition.png', dpi=300, bbox_inches='tight') plt.close ()
Мы можем использовать данный график для создания персонализированных предложений для клиентов с разным уровнем образования.
4. Уровень использования кредита по статусу клиента
plt.figure () sns.violinplot (x='Attrition_Flag', y='Avg_Utilization_Ratio', data=df, inner='quartile') plt.title («Использование кредита по статусу клиента») plt.xlabel («Статус клиента») plt.ylabel («Средний коэффициент использования») plt.savefig ('credit_utilization_by_attrition.png', dpi=300, bbox_inches='tight') plt.close ()
Ушедшие клиенты либо используют лимит слишком мало, либо слишком много.
Лояльные клиенты чаще держат сбалансированное использование кредита.
5. Распределение дохода по статусу клиента
plt.figure () income_order = [«Less than $40K», «$40K — $60K», «$60K — $80K», «$80K — $120K», «$120K +»] df['Income_Category'] = pd.Categorical (df['Income_Category'], categories=income_order, ordered=True) income_plot = df.groupby (['Income_Category', 'Attrition_Flag']).size ().unstack () income_plot.plot (kind='bar', stacked=True, colormap='viridis') plt.title («Распределение уровня дохода по статусу клиента») plt.xlabel («Категория дохода») plt.ylabel («Количество») plt.xticks (rotation=45) plt.legend (title="Статус клиента») plt.savefig ('income_category_by_attrition.png', dpi=300, bbox_inches='tight') plt.close ()
Клиенты с низким доходом ($40K-) уходят чаще.
Клиенты с высоким доходом остаются, но их тоже можно удерживать премиальными услугами.
Выводы
Чем меньше транзакций совершает клиент, тем выше вероятность его ухода.
Люди с низкими кредитными лимитами и низким доходом уходят чаще.
Образование и уровень дохода влияют на лояльность клиентов.
Потенциальные рекомендации банку:
Разработать мотивационные программы (кешбэк, скидки, бонусы).
Персонализировать лимиты на основе транзакционной активности.
Усилить коммуникацию с группами риска (низкий доход, низкая активность).
Использовать анализ данных для прогнозирования оттока.
Таким образом наш анализ помог выявить ключевые закономерности и предложить стратегии, которые помогут банку снизить отток клиентов и оптимизировать финансовые предложения.
Ссылки
Использованные ИИ
https://chatgpt.com — Для генерации обложки и форматирования текста



