本文是對貸款活動案例的一個總結,主要任務是對活動效果進行復盤分析,并挖掘出影響用戶貸款的關鍵因素。
一、項目背景介紹:
Thera Bank是一家擁有不斷增長客戶群的銀行。銀行希望有效地將存款用戶轉化為貸款用戶以此擴大貸款業(yè)務量的基礎,以帶來更多的貸款業(yè)務。因此,該銀行去年為存款用戶但未辦理個人貸款業(yè)務的客戶開展了一項推廣活動來促使其辦理個人貸款業(yè)務,有部分客戶通過此活動已經(jīng)辦理了相關服務。這時的零售營銷部門希望制定更好的策略去定位營銷,以最小的預算提高成功率。
二、分析目標:
該部門希望識別出更有可能購買貸款的潛在客戶,提高轉化的成功率,降低營銷的費用。
三、分析思路:
- 去年銀行舉辦的推廣活動的效果如何?
- 什么類型的存款用戶成為銀行貸款業(yè)務的潛在客戶可能性更大?
- 隨著客戶年收入的增長,貸款情況是如何變化?
- 隨著客戶年齡的增長,貸款情況如何變化?
四、分析過程:
1、準備工作(數(shù)據(jù)集觀察與數(shù)據(jù)清洗)
(1)導入常用包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
(2)導入數(shù)據(jù)集
import pymysql
pymysql.install_as_MySQLdb()
from sqlalchemy import create_engine
engine=create_engine('mysql://frogdata05:Frogdata!1321@localhost:3306/frogdata?charset=gbk')
(3)讀取數(shù)據(jù)
Bank_Personal_Loan=pd.read_sql_query('select * from Personal_Loan',con=engine)
2、理解數(shù)據(jù)
數(shù)據(jù)集共包含5000條記錄,14個字段,對應字段含義如下:
ID - 客戶
Age - 客戶年齡
Experience - 客戶工作經(jīng)驗
Income - 客戶年收入(單位:千美元)
ZIPCode - 家庭地址郵政編碼
Family - 客戶的家庭規(guī)模
CCAvg - 每月信用卡消費額(單位:千美元)
Education - 教育水平 (1: 本科; 2: 研究生; 3: 高級)
Mortgage - 房屋抵押價值(如有)(單位:千美元)
Personal Loan - 此客戶是否接受上一次活動中提供的個人貸款?(1:是 0:否)
Securities Account - 是否有證券賬戶?(1:是 0:否)
CD Account - 是否有存款證明(CD)帳戶嗎(1:是 0:否)
Online - 是否開通網(wǎng)上銀行?(1:是 0:否)
CreditCard - 是否有信用卡?(1:是 0:否)
#觀察數(shù)據(jù)整體情況
Bank_Personal_Loan.info()

- 觀察各字段信息,數(shù)據(jù)并無重復,缺失情況;對于一些數(shù)值型的字段則需要做一些數(shù)據(jù)類型的轉化
#更改變量類型,方便后續(xù)做統(tǒng)計分析
Bank_Personal_Loan['Age']=Bank_Personal_Loan['Age'].astype('int')
Bank_Personal_Loan['Experience']=Bank_Personal_Loan['Experience'].astype('int')
Bank_Personal_Loan['Family']=Bank_Personal_Loan['Family'].astype('int')
Bank_Personal_Loan['Education']=Bank_Personal_Loan['Education'].astype('int')
Bank_Personal_Loan['ZIP Code']=Bank_Personal_Loan['ZIP Code'].astype('int')
Bank_Personal_Loan['Personal Loan']=Bank_Personal_Loan['Personal Loan'].astype('int')
Bank_Personal_Loan['CD Account']=Bank_Personal_Loan['CD Account'].astype('int')
Bank_Personal_Loan['Securities Account']=Bank_Personal_Loan['Securities Account'].astype('int')
Bank_Personal_Loan['Online']=Bank_Personal_Loan['Online'].astype('int')
Bank_Personal_Loan['CreditCard']=Bank_Personal_Loan['CreditCard'].astype('int')
Bank_Personal_Loan['Income']=Bank_Personal_Loan['Income'].astype('float')
Bank_Personal_Loan['CCAvg']=Bank_Personal_Loan['CCAvg'].astype('float')
Bank_Personal_Loan['Mortgage']=Bank_Personal_Loan['Mortgage'].astype('float')
#觀察數(shù)據(jù)的一個描述性信息
Bank_Personal_Loan.describe()

- 發(fā)現(xiàn)Experience出現(xiàn)負值,有異常數(shù)據(jù)
#考慮將Experience的負值改為0
Bank_Personal_Loan.loc[Bank_Personal_Loan['Experience']< 0,'Experience']=0
Bank_Personal_Loan['Experience'].describe()
3、數(shù)據(jù)分析
(1)去年銀行舉辦的推廣活動的效果如何?
#活動推廣結果分析
Bank_Personal_Loan['Personal Loan'].value_counts()
# Bank_Personal_Loan.groupby(['Personal Loan']).size() 也能達成

通過這次推廣活動以后,5000名客戶中,有480個客戶開通了個人貸款業(yè)務。由于該活動是針對未辦理個人貸款業(yè)務的客戶開展的,對比從以往數(shù)據(jù)來看,個人貸款業(yè)務增長了近10%,說明此次推廣活動的效果還是不錯的
(2)什么類型的存款用戶成為銀行貸款業(yè)務的潛在客戶可能性更大?
#探索其他變量與Personal Loan變量的關系
print(Bank_Personal_Loan.corr()['Personal Loan'])

#fig代表繪圖窗口(Figure);axis代表這個繪圖窗口上的坐標系(axis)
fig,axis=plt.subplots(figsize=(12,12))
#繪制熱力圖,顏色越深,相關性越強,annot是否顯示數(shù)值,cmap指定顏色
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、和開通信貸弱相關的變量有:受教育程度,房屋抵押貸款數(shù),家庭人數(shù);
3、郵編、是否是證券賬戶,是否開通網(wǎng)上銀行及是否有信用卡,關系都不大;
4、年齡、工作經(jīng)驗雖然關系也不大,但它們屬于連續(xù)的數(shù)值變量,所以需要分箱后再做觀察,看看是否有某一段存在特殊值。
先剔除無關的變量,對其余相關變量進行分析
1.1、定性變量與開通貸款的關系
(對定性變量中是否有該銀行存單賬戶、受教育程度、家庭人數(shù)與是否開通貸款的關系進行探究)
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.1.2、教育水平
print(Bank_Personal_Loan.groupby('Education')['Personal Loan'].agg([np.mean,'count']))
sns.catplot('Education',hue='Personal Loan',data=Bank_Personal_Loan,kind='count')

學歷越高,貸款意愿的比率越多,說明教育水平越高,越能接受超前消費觀念,其貸款意愿越高。學歷層次越高的用戶的存款用戶成為銀行貸款業(yè)務的潛在客戶可能性會更大
1.1.3 家庭人數(shù)
print(Bank_Personal_Loan.groupby('Family')['Personal Loan'].agg([np.mean]))
sns.catplot('Family',hue='Personal Loan',data=Bank_Personal_Loan,kind='count')

單身人士與沒有孩子的家庭的貸款率都比較低,有孩子的家庭用戶相對而言更有意愿轉化為貸款用戶,特別是獨生子女家庭
2.1、定量變量與開通貸款的關系
(對定量變量中的年領、收入、信用卡還款額和房屋抵押貸款與是否開通貸款的關系進行探究)
2.1.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()

綜合來看,各階段的年齡的貸款意愿都相差不大,相對來說區(qū)間在(32.0, 39.0]的客戶意愿較強
2.1.2、收入
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()

2.1.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.1.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千美元以上的客戶加大力度去營銷
四、結論
- 通過這次活動,個人貸款業(yè)務增長了近10%,說明此次推廣活動的效果還是不錯的。
- 對于開通了銀行賬戶的用戶需要加強營銷力度,他們的貸款意愿相對于沒有開通銀行賬戶更強,同時也需要擴展開通了銀行賬戶的用戶數(shù)量,以將其轉化為更多的貸款用戶。
- 教育水平越高的客戶越容易接受貸款
- 家庭人口較多的家庭貸款意愿較強,尤其是獨生子女的家庭
- 年齡區(qū)間在30-40歲的客戶相對貸款意愿更強
- 相對收入越高,貸款的意愿越強烈, 當年收入超過82時,貸款意愿會有5倍以上的上升,超過98時,貸款意愿達到17%以上,超過170時,貸款意愿達到一半
- 當房屋抵押值大于190.5千美元時,貸款申請的意愿有明顯的提升
- 每月消費額在2.8千美元以上的客戶,貸款申請的意愿有明顯的提升