Lending Club贷款数据分析(下)

  • 数据可视化
  • 结论

上一篇文章中,我们说到了如何处理数据,并且最后筛选出比较重要的一些特征。按道理来说,接下来我们应该对数据进行去重、归一化、进行建模了。然而时间、精力有限,且与最终要研究的目的没多大关系,所以这一部分并没有进行深层研究。

接下来我们从数据可视化开始说起,探究潜藏在数据背后的信息。

五、数据可视化

首先我们来看一下2016年第一季度业务开展情况,主要是放款笔数,金额,期限等情况

perform_data = analysis_data.groupby('month')['loan_amnt'].agg(['count','sum'])#贷款笔数与放贷金额
f, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
x = perform_data.index  #月份month
y1 = perform_data['count']#贷款笔数
sns.barplot(x, y1, ax=ax1)
y2 = perform_data['sum']#贷款金额
ax1.set_xlabel("")
ax1.set_ylabel("loan_count")
sns.barplot(x, y2,ax=ax2)
ax2.set_ylabel("loan_amount")
sns.despine(bottom=True)
第一季度贷款笔数、金额分布图

可以看出,1月份至3月份的贷款笔数、贷款金额都在提升。

第一季度贷款等级变化趋势

在同时,第一季度中不同等级的贷款数量都有所增长,其中F、G等级贷款继续维持在一定的、较低的成交数量,而其他等级贷款的数量和涨幅都较为明显。

通过两个图表我们对第一季度整体的业绩有了一些了解,接下来我们将更具体的了解业务的内容,比如说贷款金额、贷款期限以及利率等。

from scipy.stats import norm   #贷款金额分布
sns.distplot(analysis_data.loan_amnt,fit=norm,kde=False,color='blue')
sns.despine(top=True)
贷款金额分布图

单笔贷款金额在1万~2万美元范围内占比较多,较高金额的贷款数量较少,也间接证明了lending club 主营小额度的贷款项目。

analysis_data.term.value_counts().plot.pie(autopct='%.2f',figsize=(10, 10),colors = ['yellowgreen','lightblue']) #借款周期分布比例
贷款周期占比

贷款周期分为36个月与60个月,主要以36个月为主,不过60个月的比重也不小。在p2p平台上以短期贷款为主,长期贷款也有,利率较高,但周期较长。借出人收获利息,承担风险,而借入人到期要偿还本金。贷款周期越长,对借出人来说风险越高。

在国内的环境下,借出人不仅要承担推迟还款的风险,还要担心平台跑路、本息全无的高风险;对借入人来说,因为国内缺少健全的征信体系,借款方违约及重复违约成本低。

对国内的情况不再多说,话题绕回来。国外的部分国家已有健全的征信体系,一旦违约还款,违约率不断上涨,个人征信也会保留记录,对后序的贷款、买房有很大的影响。所以如果贷款周期较长,且如果没有固定的工作和固定的收入的话(即使有未定收入也不一定如期偿还),偿还本金充满变数,很有可能违约。

所以通过上图可以看出几个信息:

1.短期贷款占比重较大,长期贷款占比也不低

2.Lending club平台有较强的风控能力,部分借出方比较信任平台(不怕平台跑路),而借入方对自身的还款能力有一定的信心。

接下来我们再试着对贷款人进行分析,形成一下用户画像吧。

贷款人工龄分布图

从图中可以看出,贷款人中有37%的比例的人工龄为10年以上。那么,我们可以考虑一下,为什么工龄超过10年的人有贷款需求呢?且占比这么高?

那么可以猜测一下(个人意见),首先可能是工龄越长,贷款通过率越高(筛选后占比较高),其次可能有部分是工作超过10年但是被裁员的(经济不好),有部分是还有工作但是需要还房贷的(不知道国外的形式),有部分是个人家庭有大笔支出的(个例,占比不大),当然不排除谎报工龄的可能。

至于猜测是否准确个人不能保证,还需要结合当年的经济形势,以及职业变动等情况进行综合判断,在此不再深究。

#贷款人收入水平
sns.factorplot(x="grade", y="annual_inc", hue="verification_status", data=lendData,order=list('ABCDEFG'),size=15,palette="Paired")
贷款人收入水平

再来看看收入水平的情况。贷款人的收入水平信息分为三种情况:已经过LC验证,收入来源已验证,未验证。这三种情况目前从图中看不出有什么不同。总之,贷款等级与收入水平在整体上呈正相关的趋势。

analysis_data.home_ownership.value_counts().plot.pie(autopct='%.2f',figsize=(10, 10),colors= ['red','yellowgreen','lightskyblue']) #借款人住房状况分布
借款人住房状况分布图

大多数人的房屋状态是抵押贷款(大部分人是房奴),只有少部分人有完全的产权。

#贷款等级与住房情况
analysis_data_home = lendData.groupby(['grade','home_ownership'])[['issue_d']].count().apply(lambda x : x/x.sum(level=0)).unstack(level=1)\
             .reset_index().set_index('grade')\
             .stack(level=0).reset_index(level=1, drop=True)
analysis_data_home.plot.barh(stacked=True,figsize=(15,8)).legend(loc='center left', bbox_to_anchor=(1, 0.5))
贷款等级与住房情况

意外的发现,贷款等级越高的人群,他们的住房情况是抵押贷款的几率越高,而租房的几率越低。而拥有完全产权的人群在各个贷款等级的人群中占比差不多。

再来看看他们贷款都干什么了。

sns.countplot(y=analysis_data.purpose) #贷款用途分布
sns.despine(top=True)
贷款用途分布

可以很明显的看出debt_consolidation(可以理解为债务整合,借新还旧)占比最高,占比第二高的credit_card也归属为同一类。

贷款目的与人均收入水平

综合收入水平与贷款用途得到上图,我们可以发现在第一季度中,人均收入水平较高的人群贷款用于小生意,家庭生活改善,房子等。而贷款为了债务整合(占比最高)的人群的人均收入水平在整体的中下。

对贷款人群了解的也差不多了,接下来我们看一下资产质量

如何定义资产质量呢?在这里可以狭义地理解为在一定时期、利率、期限结构下资产所能来带的收益高低或损失可能,对于贷款来说,借款人偿还本息的及时足额程度、借款人的信用等级、贷款的利率期限等等都影响到资产的质量。

不过要注意,通常我们认为借款人的还款观察期最好是在6个月到12个月,因为在这个期限内,借款人还款的表现情况才逐渐趋于稳定。而计算第一季度的delinquent rate(拖欠率)是不具备代表性的,所以在这里就不对第一季度的整体Bad Rate(坏账率)做进一步的分析了,而是着重观察不同信用等级下的资产质量。

说实话,关于资产质量的这部分并没有分析经验,也是参考了一下大牛的文章引用过来的。文末会给出链接,对金融、p2p感兴趣的可以自行学习。

回归正题,既然资产质量与偿还利息是否及时、借款人信用等级等等相关,那么就把这些信息整合起来,查看一下不同贷款等级的贷款质量。

在众多特征中,有个特征变量loan_status(贷款状态)来描述当前贷款处于什么状态,其中包括Current、Fully Paid、Charged Off(注销)、Default、In Grace Period(在宽限期)、Late (16-30 days)(延期16-30天) 、Late (31-120 days)(延期31-120天)这几种状态。

#将贷款状态分为好与坏,好的贷款状态就是current(在还款期),fully paid(全部偿还),剩下的认为是坏的状态
past_due = ['In Grace Period','Late (16-30 days)', 'Late (31-120 days)', 'Default','Charged Off']
delinquent = ['Late (16-30 days)', 'Late (31-120 days)', 'Default'] 
lost = ['Default']
charged_off = ['Charged Off']
analysis_data_1 = analysis_data.copy()
analysis_data_1['loan_status']  = analysis_data_1['loan_status'].map(lambda x :'Past Due' if x in past_due else x)
groupd_grade =  analysis_data_1.groupby(['grade','loan_status'])
pay_data_2 = groupd_grade.agg({'loan_amnt':'sum','out_prncp':'sum','total_rec_prncp':'sum','total_rec_int':'sum'}) \
                    .assign(loan_amnt_pct=lambda x : x['loan_amnt']/x.groupby(level=0)['loan_amnt'].sum(),
                             out_prncp_pct=lambda x : x['out_prncp']/x.groupby(level=0)['out_prncp'].sum())
pay_data_2
贷款等级与贷款状态的分布

接下来分别解释一下特征的含义。total_rec_prncp(迄今收到的本金),
total_rec_int (迄今收到的利息),out_prncp (总资金中剩余的未偿还本金),后两列原数据集中没有,分别代表当前贷款金额占该等级所有贷款金额的比例, 未偿还本金金额占该等级所有未偿还本金金额的比例。

我们可以看到,贷款状态分成了三类,Past Due中包括的都是不好的贷款状态,用来衡量贷款质量。

之后我们将Past Due(坏的状态)单独提取出来

f, (ax1, ax2) = plt.subplots(2, 1, sharex=True)
x = past_due_data.index
y1 = past_due_data['loan_amnt_pct']
sns.barplot(x, y1, ax=ax1)
y2 = past_due_data['out_prncp_pct']
ax1.set_xlabel("")
ax1.set_ylabel("loan_amnt_pct") #坏的状态的贷款所占比例
sns.barplot(x, y2,ax=ax2)
ax2.set_ylabel("past_due_rate") #未偿还本金的贷款所占比例
sns.despine(bottom=True)
贷款等级与坏的贷款所占比例

从图中我们看出,贷款等级越高,贷款质量越高。A等级最好,G等级最差,也从侧面看出Lending club的风控水平。

六、结论

通过数据可视化我们对2016年第一季度的数据已经有了一个整体的认识。那么我们最终要研究的问题是否已经找到答案了呢?回答是肯定的。在调查Lending club背景时,我们得到了模糊的线索。在进行数据预处理过程中,我们通过相关系数得到与贷款等级关系密切的特征,后续又通过数据可视化直观的看到与贷款等级相关的因素。下面就做一下总结。

影响贷款等级的相关因素

1.首先通过背景了解到FICO分数,分数越高,贷款通过的可能性与等级也越高。

FICO特征在原数据集中缺失,该图片源自其他文章

2.征信记录。包括征信查询、贷款人的不良信用记录等。征信记录很重要,并且占据较大的权重。因为过去的信用记录反映的是这个人潜在的坏账率,本来嘛LC必须要保障借出人与自身的利益。


特征分类

3.资产实力。包括收入水平、住房情况、dti等。住房情况在重要性筛选过程中出现,收入水平在数据可视化过程中观察到明显的相关性。然而这些特征并不是主要的影响因素,权重较低。

通过上述的总结归纳,我们得知Lending club平台已经有了一个完整的筛选、评级体系,且有足够的风控水平,通过对信息来源进行核实,以及控制低等级贷款的数量来维持整体贷款的水平,降低坏账率。虽然现在Lending club的形势不太乐观,但在丑闻事件的打击中它还是挺过来了。不论之后该公司如何发展,至少它成型的风控水平值得国内绝大多数p2p平台学习。


参考

1.数据分析之python大法

2.用seaborn画出好看的分布图

3.10分钟python图表绘制 seaborn入门

4.Lending club股价大跌

5.Lending club透彻分析


本文为 泰阁志-解密大数据 学习笔记,了解更多请关注微信“泰阁志”

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • 研究摘要 近年来,大数据、云计算、人工智能和区块链等一系列技术的飞速发展,使得科技成为推动金融变革的重要力量。金融...
    shenciyou阅读 3,222评论 0 8
  • 都说要多读书、多读课外书,可是很多家长和小朋友都很犯难: “我们也知道读书很重要呀,可是就是读不进去啊?”或者“小...
    林珑_阅读 5,281评论 3 4
  • 在ubuntu系统中连接多个网络,默认情况下会添加多条默认路由,比如公司内网地址和外网地址。这样会导致访问内网某些...
    oulinbao阅读 2,931评论 0 0
  • 我觉得“忍”这个字做起来真的很难,我这个脾气真的需要改,生活和工作上也如此。 在家的话现在的情况会好点,和家人说话...
    来治猩猩的你hhh阅读 199评论 0 0