项目背景:Thera Bank银行的主要盈利业务靠的是贷款,这些客户中的大多数是存款大小不等的责任客户(存款人)。同时也是借款人的客户(资产客户)数量很少,银行有兴趣迅速扩大这一基础,以开展更多的贷款业务,并在此过程中通过贷款利息赚取更多。特别是,管理层希望探索将负债客户转换为个人贷款客户(同时保留他们作为存款人)的方法。该银行去年针对负债客户开展的一项活动显示,成功实现了9%以上的成功转化。 我们这次数据来源在kaggle上,链接:https://www.kaggle.com/itsmesunil/bank-loan-modelling?
做完前戏之后,我们可以直接对数据进行理解
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:否)
对于数据,我们一般会看看数据的重复,缺失情况,顺便会对于一些数值型的字段则需要做一些数据类型的转化 #观察数据的一个描述性信息 Bank_Personal_Loan.describe() 明显看到异常情况,Experience出现负值,有异常数据 #考虑将Experience的负值改为0 Bank_Personal_Loan.loc[Bank_Personal_Loan[‘Experience’]< 0,‘Experience’]=0 Bank_Personal_Loan[‘Experience’].describe()
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.1是否有该银行存单账户 print(Bank_Personal_Loan.groupby(‘CD Account’)[‘Personal Loan’].agg([np.mean])) sns.countplot(x=“CD Account”,data=Bank_Personal_Loan,hue=‘Personal Loan’)
开通了银行存单账户的客户,其申请贷款的可能性是没有开通的6倍多,说明开通了银行账户的客户是一个主要的目标客户;找到方法让客户开通该银行存款账单也是一个提高申请贷款率的可能选项。
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’)
学历越高,贷款意愿的比率越多,说明教育水平越高,越能接受超前消费观念,其贷款意愿越高。学历层次越高的用户的存款用户成为银行贷款业务的潜在客户可能性会更大
1.3家庭人数 print(Bank_Personal_Loan.groupby(‘Family’)[‘Personal Loan’].agg([np.mean])) sns.catplot(‘Family’,hue=‘Personal Loan’,data=Bank_Personal_Loan,kind=‘count’)
单身人士与没有孩子的家庭的贷款率都比较低,有孩子的家庭用户相对而言更有意愿转化为贷款用户,特别是独生子女家庭
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()
综合来看,各阶段的年龄的贷款意愿都相差不大,相对来说区间在(32.0, 39.0]的客户意愿较强
2.1、收入 print(Bank_Personal_Loan.groupby(‘Personal Loan’)[‘Income’].agg([np.mean,‘count’])) sns.boxenplot(x=‘Personal Loan’,y=‘Income’,data=Bank_Personal_Loan)
取平均来看,高收入的人群会比低收入的人群更愿意申请贷款
对收入分层 Bank_Personal_Loan[‘Income Bins’] = pd.qcut(Bank_Personal_Loan.Income,20) 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()
当年收入超过82时,贷款意愿会有5倍以上的上升,超过98时,贷款意愿达到17%以上,超过170时,贷款意愿达到一半,相对收入越高,贷款的意愿越强烈
2.3、房屋抵押值 print(Bank_Personal_Loan.groupby(‘Personal Loan’)[‘Mortgage’].agg([np.mean,‘count’])) sns.catplot(‘Personal Loan’,‘Mortgage’,data=Bank_Personal_Loan,kind=‘boxen’) #对抵押值分层 Bank_Personal_Loan[‘Mortgage_Bins’]=pd.cut(Bank_Personal_Loan.Mortgage,10) print(Bank_Personal_Loan.groupby(‘Mortgage_Bins’)[‘Personal Loan’].agg({np.mean,‘count’})) Bank_Personal_Loan.groupby(‘Mortgage_Bins’)[‘Personal Loan’].agg({‘Loan_rate’:np.mean}).plot()
当房屋抵押值大于190.5千美元时,贷款申请的意愿有明显的提升,总体来看,抵押值越高,贷款意愿越强烈
2.4、每月信用卡消费额 print(Bank_Personal_Loan.groupby(‘Personal Loan’)[‘CCAvg’].agg([np.mean,‘count’])) sns.boxenplot(x=‘Personal Loan’,y=‘CCAvg’,data=Bank_Personal_Loan)
大部分没有申请贷款的,信用卡消费额的均值在1.7K美元左右,而申请贷款的客户信用款消费额均值达到3.9K美元,是其2倍有多。
对每月消费额进行分层 Bank_Personal_Loan[‘CCAvg Bins’]=pd.qcut(Bank_Personal_Loan.CCAvg,20) print(Bank_Personal_Loan.groupby(‘CCAvg Bins’)[‘Personal Loan’].agg({‘mean’,‘count’})) Bank_Personal_Loan.groupby(‘CCAvg Bins’)[‘Personal Loan’].agg({‘Loan rate’:np.mean}).plot()
大概在每月消费额为2.8千美元时,申请贷款率会增大将近4倍,超过6千美元时,申请申请贷款率会有所回落到31%左右,但这个贷款意愿相对还是很强烈的,可对每月消费额在2.8千美元以上的客户加大力度去营销
4、结论 通过这次活动,个人贷款业务增长了近10%,说明此次推广活动的效果还是不错的
对于开通了银行账户的用户需要加强营销力度,他们的贷款意愿相对于没有开通银行账户更强
教育水平越高的客户越容易接受贷款
家庭人口较多的家庭贷款意愿较强,尤其是独生子女的家庭
年龄区间在30-40岁的客户相对贷款意愿更强
相对收入越高,贷款的意愿越强烈, 当年收入超过82时,贷款意愿会有5倍以上的上升,超过98时,贷款意愿达到17%以上,超过170时,贷款意愿达到一半
当房屋抵押值大于190.5千美元时,贷款申请的意愿有明显的提升
每月消费额在2.8千美元以上的客户,贷款申请的意愿有明显的提升