美文网首页
python银行拉新活动分析

python银行拉新活动分析

作者: 弦好想断 | 来源:发表于2020-08-20 19:38 被阅读0次

案例背景:

Thera Bank是一家拥有不断增长客户群的银行。这银行中大多数客户的存款规模都是不一样的。由于贷款业务的客户数量很少,所以银行希望有效地将存款用户转化为贷款用户以此扩大贷款业务量的基础,以带来更多的贷款业务,并在此过程中,通过贷款利息赚取更多。

  • 因此,该银行去年为存款用户但未办理个人贷款业务的客户开展了一项推广活动来促使其办理个人贷款业务,有部分客户通过此活动已经办理了相关服务。这时的零售营销部门希望制定更好的策略去定位营销,以最小的预算提高成功率。该部门希望识别出更有可能购买贷款的潜在客户,提高转化的成功率,降低营销的费用。感谢分享https://www.bilibili.com/video/BV1B54y1v7by

2、理解数据
数据集共包含5000条记录,14个字段,对应字段含义如下:

  • ID - 客户
  • Age - 客户年龄
  • Experience - 客户工作经验
  • Income - 客户年收入(单位:千美元)
  • ZIPCode - 家庭地址邮政编码
  • Family - 客户的家庭规模
  • CCAvg - 每月信用卡消费额(单位:千美元)
  • Education - 教育水平 (1: 本科; 2: 研究生; 3: 高级)
  • Mortgage - 房屋抵押价值(如有)(单位:千美元)
  • Personal Loan - 此客户是否接受上一次活动中提供的个人贷款?(1:是 0:否)
  • Securities Account - 是否有证券账户?(1:是 0:否)
  • CD Account - 是否有存款证明(CD)帐户吗(1:是 0:否)
  • Online - 是否开通网上银行?(1:是 0:否)
  • CreditCard - 是否有信用卡?(1:是 0:否)
#导入相关模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pymysql
pymysql.install_as_MySQLdb()
from sqlalchemy import create_engine
engine=create_engine("mysql://frogdata02:frogmysql@47.101.221.137:3306/frogdata?charset=gbk")
#这个地方主机名不要用引号
# engine=create_engine('mysql+pymysql://frogdata02:frogmysql@47.101.221.137:3306/frogdata?charset=gbk')
#这种也是OK的
Bank_Personal_Loan=pd.read_sql('select * from Personal_Loan',con=engine)#读取数据
观察数据整体情况
Bank_Personal_Loan.info()

一共5000条,数据并无重复,缺失情况;对于一些数值型的字段则需要做一些数据类型的转化

发现Experience出现负值,有异常数据,考虑将Experience的负值改为0
Bank_Personal_Loan.loc[Bank_Personal_Loan['Experience']< 0,'Experience']=0

3、整体思路:

一、去年银行举办的推广活动的效果如何?
二、什么类型的存款用户成为银行贷款业务的潜在客户可能性更大?
三、随着客户年收入的增长,贷款情况是如何变化?
四、随着客户年龄的增长,贷款情况如何变化?
活动推广结果:

Bank_Personal_Loan.groupby(['Personal Loan']).size()

通过这次推广活动以后,5000名客户中,有480个客户开通了个人贷款业务。由于该活动是针对未办理个人贷款业务的客户开展的,对比从以往数据来看,个人贷款业务增长了近10%,说明此次推广活动的效果还是不错的

探索其他变量与Personal Loan变量的关系

print(Bank_Personal_Loan.corr()['Personal Loan'])
#fig代表绘图窗口(Figure);axis代表这个绘图窗口上的坐标系(axis)
fig,axis = plt.subplots(figsize=(12,12))
#绘制热力图,颜色越深,相关性越强
ax=sns.heatmap(Bank_Personal_Loan.corr(),annot=True,cmap="YlGnBu")
#bottom代表y轴下限,top表示y轴上限(有些matplotlib版本画热力图上下边框只显示一半)
bottom, top = ax.get_ylim()
ax.set_ylim(bottom + 0.5, top - 0.5)

从图中可以看出:
1、和开通信贷强相关的变量有:收入,信用卡还款额及是否有该银行存单账户;
2、和开通信贷弱相关的变量有:受教育程度,房屋抵押贷款数,家庭人数;
3、邮编、是否是证券账户,是否开通网上银行及是否有信用卡,关系都不大;
4、年龄、工作经验虽然关系也不大,但它们属于连续的数值变量,所以需要分箱后再做观察,看看是否有某一段存在特殊值。

1.1是否有该银行存单

Bank_Personal_Loan.groupby(['CD Account'])['Personal Loan'].mean()

有银行存单的人开通贷款的概率是没有存单的人开通贷款的概率的6倍以上

Bank_Personal_Loan.groupby(['CD Account','Personal Loan']).size()
#计数直方图
sns.countplot(x="CD Account",data=Bank_Personal_Loan,hue='Personal Loan')

说明开通了银行账户的客户是一个主要的目标客户;找到方法让客户开通该银行存款账单也是一个提高申请贷款率的可能选项。

1.2、教育水平

print(Bank_Personal_Loan.groupby('Education').agg([np.mean,'count'])['Personal Loan'])
sns.catplot('Education',hue='Personal Loan',data=Bank_Personal_Loan,kind='count')
               mean  count
Education                 
1          0.044370   2096
2          0.129722   1403
3          0.136576   1501

学历越高,贷款意愿的比率越多,说明教育水平越高,越能接受超前消费观念,其贷款意愿越高。学历层次越高的用户的存款用户成为银行贷款业务的潜在客户可能性会更大

1.3家庭人数

Bank_Personal_Loan.groupby(['Family','Personal Loan']).size()
Family  Personal Loan
1       0                1365
        1                 107
2       0                1190
        1                 106
3       0                 877
        1                 133
4       0                1088
        1                 134
dtype: int64
print(Bank_Personal_Loan.groupby('Family')['Personal Loan'].agg([np.mean]))
sns.catplot('Family',hue='Personal Loan',data=Bank_Personal_Loan,kind='count')
            mean
Family          
1       0.072690
2       0.081790
3       0.131683
4       0.109656

单身人士与没有孩子的家庭的贷款率都比较低,有孩子的家庭用户相对而言更有意愿转化为贷款用户,特别是独生子女家庭

2、定量变量与开通贷款的关系

2.1、年龄

print(Bank_Personal_Loan.groupby('Personal Loan')['Age'].agg([np.mean,'count']))
sns.boxenplot(x='Personal Loan',y='Age',data=Bank_Personal_Loan)
#对年龄分层
Bank_Personal_Loan['Income Bins'] = pd.qcut(Bank_Personal_Loan.Age,6) 
print(Bank_Personal_Loan.groupby('Income Bins')['Personal Loan'].agg([np.mean,'count']))
Bank_Personal_Loan.groupby('Income Bins')['Personal Loan'].agg({'Loan rate':np.mean}).plot()
    mean    count
Personal Loan       
0   45.367257   4520
1   45.066667   480
Bank_Personal_Loan['Age_bins'] = pd.qcut(Bank_Personal_Loan.Age,q= 6)
Bank_Personal_Loan.groupby(['Age_bins'])['Personal Loan'].agg(['mean','count'])
                  mean     count
Age_bins        
(22.999, 32.0]  0.097814    869
(32.0, 39.0]    0.105081    866
(39.0, 45.0]    0.091837    784
(45.0, 52.0]    0.093785    885
(52.0, 58.0]    0.089873    790
(58.0, 67.0]    0.096774    806

plt.rcParams['font.sans-serif'] = ['SimHei']#显示中文
plt.style.use('ggplot')
Bank_Personal_Loan.groupby(['Age_bins'])['Personal Loan'].mean().plot(title = '各年龄段贷款率')

综合来看,各阶段的年龄的贷款意愿都相差不大,相对来说区间在(32.0, 39.0]的客户意愿较强

2.2收入

Bank_Personal_Loan.groupby(['Personal Loan'])['Income'].agg(['mean','count'])
    mean    count
Personal Loan       
0   66.237389   4520
1   144.745833  480
sns.boxenplot(x = 'Personal Loan',y= 'Income',data = Bank_Personal_Loan,)

取平均来看,高收入的人群会比低收入的人群的贷款意愿会更高

#对收入分层
Bank_Personal_Loan['Income_bins'] = pd.qcut(Bank_Personal_Loan.Income,q = 20)
Bank_Personal_Loan.groupby(['Income_bins'])['Personal Loan'].agg(['mean','count'])
Bank_Personal_Loan.groupby(['Income_bins'])['Personal Loan'].mean().plot(title = "各收入段人群贷款意愿分布")

当年收入超过82时,贷款意愿会有5倍以上的上升,超过98时,贷款意愿达到17%以上,超过170时,贷款意愿达到一半,
收入越高的人,贷款意愿越强。收入从82以上的人是主要的贷款活动推广对象

2.3、房屋抵押值

Bank_Personal_Loan.groupby(['Personal Loan'])['Mortgage'].agg(['mean','count'])
sns.catplot(x='Personal Loan',y = 'Mortgage',data=Bank_Personal_Loan,kind='boxen')
#对抵押值分层
Bank_Personal_Loan['Mortgage_bins'] = pd.cut(Bank_Personal_Loan.Mortgage,bins=10)#这里使用cut将等间距分层
Bank_Personal_Loan.groupby(['Mortgage_bins'])['Personal Loan'].agg(['mean','count'])
Bank_Personal_Loan.groupby(['Mortgage_bins'])['Personal Loan'].agg(loan_rate='mean').plot(title="不同抵押款人群贷款比率",figsize = (16,8))

当房屋抵押值大于190.5千美元时,贷款申请的意愿有明显的提升,总体来看,抵押值越高,贷款意愿越强烈

2.4、每月信用卡消费额

Bank_Personal_Loan.CCAvg
Bank_Personal_Loan.groupby(['Personal Loan'])['CCAvg'].agg(['mean','count'])
Bank_Personal_Loan['CCAvg_bins']=pd.qcut(Bank_Personal_Loan.CCAvg,q=20)
Bank_Personal_Loan.groupby(['CCAvg_bins'])['Personal Loan'].agg(['mean','count'])
Bank_Personal_Loan.groupby(['CCAvg_bins'])['Personal Loan'].agg(CCAvg_loan = 'mean').plot(title= "不同信用卡消费额人群贷款比率")

大概在每月消费额为2.8千美元时,申请贷款率会增大将近4倍,超过6千美元时,申请申请贷款率会有所回落到31%左右,但这个贷款意愿相对还是很强烈的,
每月消费额在2.8千美元以上的客户是重点营销客户

4、结论

1、通过这次活动,个人贷款业务增长了近10%,说明此次推广活动的效果还是不错的
2、对于开通了银行账户的用户需要加强营销力度,他们的贷款意愿相对于没有开通银行账户更强
3、教育水平越高的客户越容易接受贷款
4、家庭人口较多的家庭贷款意愿较强,尤其是独生子女的家庭
5、年龄区间在30-40岁的客户相对贷款意愿更强
6、相对收入越高,贷款的意愿越强烈, 当年收入超过82时,贷款意愿会有5倍以上的上升,超过98时,贷款意愿达到17%以上,超过170时,贷款意愿达到一半
7、当房屋抵押值大于190.5千美元时,贷款申请的意愿有明显的提升
8、每月消费额在2.8千美元以上的客户,贷款申请的意愿有明显的提升

相关文章

网友评论

      本文标题:python银行拉新活动分析

      本文链接:https://www.haomeiwen.com/subject/ewxezhtx.html