项目背景

作为旧金山的一家个人对个人的借贷公司,Lending Club成立于2006年。他们是第一家注册为按照美国证券交易委员会SEC(Securities and Exchange Commission)的安全标准向个人提供个人贷款的借贷公司。与传统借贷机构最大的不同是,Lending Club利用网络技术打造的这个交易平台,直接连接了个人投资者和个人借贷者,通过此种方式,缩短了资金流通的细节,尤其是绕过了传统的大银行等金融机构,使得投资者和借贷者都能得到更多实惠、更快捷。对于投资者来说可以获得更好的回报,而对于借贷者来说,则可以获得相对较低的贷款利率。

盈利模式:Lending Club的利润主要来自对贷款人收取的手续费和对投资者的管理费,前者会因为贷款者个人条件的不同而有所起伏,一般为贷款总额的1.1-5%;后者则是统一对投资者收取一样的1%的管理费

特色:特别重视用户的信用记录,平均只有10%的申请通过信用记录审核。这是其能吸引到很多大的投资用户,并且风险控制和利润都取得长足进步的主要原因。其管理层的背景及其雄厚,多位金融和政界传奇人物,从其首轮融资即得到1000万美元的融资便可见其规模。

2006年成立于美国加利福利尼亚州;2014年于纽交所上市,并同时开展企业贷款服务;截止到2018年底平台累计发放贷款445亿美元,平均坏账率7.7%,年均借款利率13.38%;

LC介绍:https://www.huxiu.com/article/41472.html

文章思路:提出问题——理解数据——数据预处理——解决问题——得出结论

一 提出问题

文章主要基于Python对Lending Club信贷业务数据的分析,主要是想通过2018年Q4数据分析平台业务特点和客户群体特征,进而简要分析逾期的影响因素。

一个人是否还款可以从还款能力和还款意愿来评估。下面从两个角度进行深入分析。

1 平台角度:平台的数据指标更多构建来衡量结果的指标,简要分析了解平台整体情况。s

2 客户角度:任何可以量化客户的还款能力的信息均可以用作硬信息,可描述客户还款意愿的信息则为软信息。

二 数据理解

数据来源LC官网:https://link.zhihu.com/?target=https%3A//www.lendingclub.com/info/download-data.action

原始数据维度:103546行,145个字段。选取18个相关字典字段进行分析。

三 数据预处理

3.1 选取子集并重命名

选取子集
used_col = ['loan_status','issue_d','loan_amnt','term','int_rate','grade','annual_inc','dti','home_ownership',
             'emp_length','purpose','addr_state','acc_now_delinq','pub_rec','delinq_2yrs','open_il_12m','open_il_24m']
used_data = loans[used_col]

# 使用rename函数对字段重命名
used_data = used_data.rename(columns={'loan_status':'贷款状态','issue_d':'放贷日期','loan_amnt':'贷款金额',
                                      'term':'还款期数','int_rate':'贷款利率','grade':'贷款等级',
                                      'annual_inc':'年收入','home_ownership':'房屋所有权','dti':'负债收入比',
                                      'emp_length':'工作年限','purpose':'贷款目的','addr_state':'申请人所在洲',
                                      'acc_now_delinq':'拖欠账户数量','pub_rec':'损害公共记录次数',
                                      'delinq_2yrs':'2年内违约次数','open_il_12m':'1年内分期数','open_il_24m':'2年内分期数'})
used_data2=used_data.copy() # 备份
used_data.head(3) # 查看前3行数据

3.2 处理缺失值

# 查看空值缺失值情况
def not_null_count(column):
    column_null = pd.isnull(column)  #判断某列属性是否存在缺失值
    null = column[column_null]
    return len(null)

column_null_count = used_data.apply(not_null_count)  
column_null_count

得知负债收入比含有28个缺失值,筛选数据来观察

used_data.loc[used_data['负债收入比'].isnull()]

# 观察发现众多指标中,工龄为'n/a'的客户缺失比例较大,所以用其均值对nan进行填充。
# 有时候也需要0填充used_data['负债收入比'].fillna(value=0)
used_data['负债收入比'] = used_data['负债收入比'].fillna(used_data.loc[used_data['工作年限']=='n/a']['负债收入比'].mean())
# 填充后观察整体数据类型情况
used_data.info()

通过观察可知,数据已无缺失值;浮点型数据有2个,整型有6个,字符串有9个。

其中放贷日期可以转换为日期格式,贷款利率和工作年限可以量化,优先处理。

3.3 数据类型转换

# 字符串转日期格式
used_data['放贷日期'] = pd.to_datetime(used_data['放贷日期'],format='%Y/%m/%d')
#errors='coerce' 如果原始数据不符合日期的格式,转换后的值为空值NaT
#format 是你原始数据中日期的格式

# 特殊字符串转浮点型——贷款利率
used_data['贷款利率']= used_data['贷款利率'].str.rstrip("%").astype("float")

# 特殊字符串转数值——工作年限
used_data['工作年限'].value_counts()

通过观察可知:年龄类别有12个,除小于1年('< 1 year')和空值('n/a')外,其余都可以用分列直接分列出对应的工龄,其中10+year需要二次分列。所以有两种处理方法:

1.通过函数处理方式处理,此处选择这种;

2.通过替换成对应年份的方法处理(后面类别数据会用到)。

# 1.编写函数处理方式处理
def coding_y(data_y):
    codlist = []
    for i in data_y:
        if i == '< 1 year':
            cod = 0
        elif i == 'n/a':
            cod = -1
        else:
            cod = i.split(' ')[0].split('+')[0] # 先分列空格,此时只有”10+“未处理好,需再次分列+号
        codlist.append(cod) 
    cod_y = pd.Series(codlist)
    return cod_y
used_data['工作年限'] = coding_y(used_data['工作年限']).astype('int') #调用函数并转换类型,方便可视化和统计

# 查看前两行,格式已转换
used_data.head(2)

3.4 查看整体数据情况

分别从字符串和数值类型来查看整体的数据情况,把握后面分析的重点

查看字符串型数据情况

# 通过select_dtypes函数筛选出object对象的对应信息
# 可分别得到非空值数量、unique数量,最大频数变量,最大频数,以及新添加一列特征变量top_pre,表示最大变量占比
used_data_des = used_data.select_dtypes(include=['object']).describe().T
used_data_des['top_pre']=used_data_des['freq']/used_data_des['count']
used_data_des

可以得出:

  • 贷款状态有7种,其中Current(未结清但无逾期)占比74.8%最高;

  • 还款期数有2种,36期占比76.2%,可用于多变量分析的对比参数;

  • 贷款等级有7类,是LC评定客户的等级,C等级占比33.9%最高;

  • 房产所以权有4种,其中按揭贷款接近一半;

  • 贷款目的有13类,其中债务合并占比57.7%,俗称以贷还贷,此类型客户逾期概率高,需深入观察;

  • 申请人所在洲有49个,美国共有50各州,说明LC业务量强大;其中LC的成立地区加利福尼亚州(CA)占比13%最高

查看数值型数据情况

# 查看数值型数据情况
used_data.describe().T

四 解决问题

4.1 平台角度-结果指标-贷款状态分析

LC数据字典提供网站:https://help.bitbond.com/article/20-the-10-loan-status-variants-explained

LC网站与LC字典解释有些有出入,比如说LC网站说有逾期30-90,但是LC字典只有逾期30-120比较接近;所以以下说明加入了自己的理解,不合理的欢迎指正。

综上:可根据逾期和未逾期划分贷款状态

未逾期标记为1:完全还清和部分还款客户;
逾期都标记为0:这里可以再细分宽限期和逾期

mapping_dict = {"贷款状态": {
                    'Current':0,'Fully Paid':0,
                    'Charged Off':1,'Late (31-120 days)':1,'Default':1,
                    'Late (16-30 days)':1,'In Grace Period':1 }
                }
used_data = used_data.replace(mapping_dict)

attr = ['正常', '逾期']  # 名称的顺序要和标签的顺序一致
pie = Pie("贷款状态占比")
pie.add("", attr, [int(i) for i in pd.value_counts(used_data["贷款状态"])] ,is_label_show=True)
pie

LC正常状态客户占91.93%,逾期客户占8.07%,整体情况良好;

在逾期客户中违约占比0.008%,但委外催收占比3.5%,极有可能是将逾期120天以上的贷款全部委外给催收机构。其实这在P2P或者银行中比较常见的,自身贷前袋中贷后都做的话业务有点大,尤其是贷后逾期严重的客户比较难催,一般都会委外给专业的催收机构。

4.1.1 平台角度-衡量指标-贷款利率&贷款金额

fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
fig.set_size_inches(12,5)

sns.distplot(used_data['贷款利率'],ax=ax1)
sns.distplot(used_data['贷款金额'],ax=ax2)

ax1.set(xlabel='贷款利率',title='贷款利率分布',)
ax2.set(xlabel='贷款金额',title='贷款金额分布')

4.1.2 平台角度-衡量指标-贷款等级

# used_data['贷款等级'].value_counts() #查看等级排序
attr = ["C", "B","D","A","E","F","G"]
pie = Pie("贷款等级比例")
pie.add("", attr, [float(i) for i in pd.value_counts(used_data['贷款等级'])] ,is_label_show=True)
pie

贷款等级最高的C和B,占比均在30%以上,其次是A和D,占比分别是12.5%和15.3%,前四个等级(A-D)占比高达92.9%,可见LC审核之严格.

前面得出正常还款的客户同样高达90%以上,是不是这部分客户就是A-D等级呢?逾期的客户是哪些等级呢?

#  使用 FacetGrid.map 构建结构化多绘图网格,查看不同等级下贷款状态的利率
order_dj = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] # 指定贷款等级排序,方便查看等级与利率关系
g = sns.FacetGrid(used_data,row='贷款状态',col='贷款等级',col_order=order_dj)
g.map(plt.hist, "贷款利率");

LC客户的信用等级从A-G,等级越高,贷款利率就越小(越偏向左,第一排贷款状态为0时更加直观);

其中正常客户(贷款状态=0)分布在A-E等级。可以反应出正常还款的客户客户信用好,财务状况较好,违约发生的可能性较低,因此等级越高,利率自然也相对较低。

逾期的客户(贷款状态=0)最多的等级是C和D。D等级占比是C等级的一半,但是逾期却差不多,后面需查看用户特征。

4.2 客户角度

4.2.1 硬性信贷指标:年收入、负债收入比

fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
fig.set_size_inches(12,5)

sns.distplot(used_data['年收入'],ax=ax1)
sns.distplot(used_data['负债收入比'],ax=ax2)

ax1.set(xlabel='年收入',title='年收入分布')
ax2.set(xlabel='负债收入比',title='负债收入比分布')

  • 年收入最高为700万,均值为8万,75%低于10万。LC客户除极少部分是高收入人群外,大部分客户收入较为一般;
  • 普遍认为负债务收入比40%是临界点,LC75%的客户负债收入比在24.59&以下,说明客户债务情况良好,负担债务意愿佳;
  • LC以客户群体收入一般,但是负债情况良好,证明LC小额贷款的切入及客户定位都非常的精准。

4.2.1 硬性信贷指标:房租所有权

# used_data['房屋所有权'].value_counts() #查看房屋所有权排序
attr = ['住房贷款', '租房', '自己所有','其他']
pie = Pie("房屋所有权占比")
pie.add("", attr, [int(i) for i in pd.value_counts(used_data["房屋所有权"])] ,is_label_show=True)
pie

  • 在住房类型种类中住房贷款和租房两者占比88%以上,说明LC客户群体定位比较精准。
  • 住房贷款占比高达49.03%,这部分客户负债较高,个人的资金流动差,更容易贷款;
  • 其次是租房39.11%,租房客户贷款说明客户群体较为普通,也即有可能是刚出社会不久的年轻人,收入较低支出较大,更容易贷款。

4.2.2 软性信贷指标:工作年限

  • 工作超过10的客户远远高于其他年限,这部分人群成家立业,家庭开支房贷等支出大,经济压力大,是LC贷款客户的最大群体。
  • 其次下来是年限在2-3稍微高于其他年限,而且6-9年占比较低,可以看出消费需求大没有多少积蓄的职场新人也是LC的重要群体之一。

4.2.2 软性信贷指标:地域(申请人所在州)

  • 客户占比最高的地区是LC的成立地区加利福尼亚州CA,世界知名的“好莱坞”和“硅谷”均在州内,经济活跃,消费能力强;
  • 其次是纽约NY,德克萨斯州TX,佛罗里达州FL等东南沿海发达地区,排在后面的也是沿海发达地区居多,客户普遍经济能力强,金融意识强。
  • LC公司客户地区多分布在沿海经济发达地区。

软性信贷指标:贷款目的

  • 57.7%的客户贷款目的是为了债务合并,19.8%是信用卡还款,近8成的客户是以贷还贷的,一旦资金异常,逾期概率就会很高。

4.2.3 信用指标:损害公共记录次数2年内违约次数/拖欠账户数量

fig = plt.figure()
ax1 = fig.add_subplot(1, 3, 1)
ax2 = fig.add_subplot(1, 3, 2)
ax3 = fig.add_subplot(1, 3, 3)
fig.set_size_inches(18,5)

sns.countplot(used_data['损害公共记录次数'].sort_values(),ax=ax1)
sns.countplot(used_data['2年内违约次数'].sort_values(),ax=ax2)
sns.countplot(used_data['拖欠账户数量'].sort_values(),ax=ax3)

ax1.set(xlabel='损害公共记录次数',title='损害公共记录次数分布')
ax2.set(xlabel='2年内违约次数',title='2年内违约次数分布')
ax3.set(xlabel='拖欠账户数量',title='拖欠账户数量分布')

  • 超过80%的客户无损害公共记录次数和2年内违约次数,拖欠账户数量几乎没有,可见平台客户信用非常好。

4.2.4 其他指标:还款期数/1年内开立分期付款帐户的数目/1年内开立分期付款帐户的数目

sns.lmplot(x="1年内开立分期付款帐户的数目", y="2年内开立分期付款帐户的数目", col="还款期数", hue="贷款状态", markers=["o", "x"], palette="Set1",data=used_data);

  • 可以看到1年内开立分期付款帐户的数目和2年内开立分期付款帐户的数目成正相关;
  • 逾期客户开户分期数少,正常的客户开户分期数多,可以作为区分是否逾期的一个特征。

结论

平台运营特点

  • 平台整体运营情况良好,正常客户占91.93%,逾期客户占8.07%。
  • 平台以小额贷款为主,借款金额主要集中在中位数1.2万前后;
  • 平台贷款利率相比于传统金融机构偏高,平均利率为13.66%,最高达30.99%;
  • 平台7个贷款等级中前四占比92.9%,正常客户集中在前5等级,逾期客户集中在C、D等级。

客户群体特征

综上,评估LC客户的还款能力和还款意愿

硬性评估:平台客户群体以中产阶级为中坚力量,49%的客户贷款买房、12%的可以有自己的房产。财务状况、负债情况良好,整体还款能力不错;
软性评估:平台客户工龄以10年以上为主,主要集中在CA,NY等沿海经济发达地区,都有一定的家庭和社会地位;近8成客户以贷还贷,而且超过80%的客户无损害公共记录次数和2年内违约次数等,信用良好。
家庭社会地位,以贷还贷,信用良好逾期概率小等等都能够反映LC客户的偿还意愿比较好。

影响客户逾期的因素更多要从客户角度去分析指标,上面提到的客户角度的指标都是可以作为参考的指标。可以在贷前做用户画像,评分卡,建模等方式来评估。

本篇主要基于LC信贷数据简要分析平台业务特点和客户特征,初步判断影响逾期的因素,未做深入相关性分析,还有诸多不足之处,后续慢慢完善。

基于Python对Lending Club信贷业务数的分析相关推荐

  1. python计算商品总价_GitHub - ideaOzy/data_analysis: 基于Python的南京二手房数据采集及可视化分析...

    基于Python的南京二手房数据采集及可视化分析 1 内容简介 首先通过爬虫采集链家网上所有南京二手房的房源数据,并对采集到的数据进行清洗:然后,对清洗后的数据进行可视化分析,探索隐藏在大量数据背后的 ...

  2. 数据清洗python实现箱线图_GitHub - nonefirst/data_analysis: 基于Python的南京二手房数据采集及可视化分析...

    基于Python的南京二手房数据采集及可视化分析 1 内容简介 首先通过爬虫采集链家网上所有南京二手房的房源数据,并对采集到的数据进行清洗:然后,对清洗后的数据进行可视化分析,探索隐藏在大量数据背后的 ...

  3. python日本 老龄化分析_基于Python关于世界自杀率影响因素的分析以及机器学习预测...

    基于Python关于世界自杀率影响因素的分析以及机器学习 预测 文/刘子桦 马若炎 [摘 要]摘 要 [期刊名称]<电子技术与软件工程> [年(卷),期]2019(000)017 [总页数 ...

  4. python网页结构分析_GitHub - Vogdhsaj/data_analysis: 基于Python的南京二手房数据采集及可视化分析...

    基于Python的南京二手房数据采集及可视化分析 1 内容简介 首先通过爬虫采集链家网上所有南京二手房的房源数据,并对采集到的数据进行清洗:然后,对清洗后的数据进行可视化分析,探索隐藏在大量数据背后的 ...

  5. python水浒传名字次数_基于Python的《水浒传》中人物分析

    基于 Python 的<水浒传>中人物分析 ◆杨旭东 [摘 要] 摘要:随着大数据技术的应用领域不断扩大,信息量也在日益膨胀, 而有价值的信息是有限的,利用文本挖掘技术可以高效地获取长文本 ...

  6. 基于 Python 的高考志愿高校及专业分析系统

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目简介 本项目利用网络爬虫技术从某高考网抓取各大高校的历年高空录取分数线,并进行数据清洗存储到文件系统中,对 ...

  7. 【毕业设计_课程设计】基于Python的南京二手房数据采集及可视化分析

    文章目录 0 项目说明 1 内容简介 2 应用技术介绍 3 数据采集 3.1 数据清洗 4 数据可视化 5 项目工程 0 项目说明 基于Python的南京二手房数据采集及可视化分析 提示:适合用于课程 ...

  8. 基于Python的微信朋友圈数据可视化分析之地点

    前提 朋友圈的相关数据请参照上一篇文章<基于Python的微信朋友圈数据可视化分析之个性签名>获取,本篇文章默认需要的数据已经下载保存至本地的 csv 文件中了. 将好友的地点按照省份进行 ...

  9. 基于Python的旅游景点的数据采集与分析的研究

    在旅游景点不断扩张,本基于Python的旅游景点的数据采集与分析系统按照软件开发方法进行研究,对系统先进行需求分析,确定系统必须做什么,进而进行系统设计,设计出满足需求的新系统,最后才是系统功能实现以 ...

最新文章

  1. python打印汉字宝塔_利用宝塔+python+搭建falsk项目_详(一)
  2. 今日 Paper | 社交媒体谣言检测;连续手语识别;细粒度服装相似性学习;混合图神经网络等
  3. 『转』Photoshop中改进ios设计流程的30个诀窍
  4. BI商业智能项目中的若干风险要素
  5. RCNN (Regions with CNN) 目标物检测
  6. 【机器视觉】 Halcon批量加载图像
  7. Vue—基础概念—指令
  8. Sublime Text如何安装和卸载插件
  9. java代码_Java 代码实现排序算法
  10. 格式化表单js插件jquery.serializeJSON
  11. java字符串替换 数组,Java工具类-拆分字符串组装数组,替换字符
  12. 解决问题的能力 > 10倍程序员
  13. Hadoop教程(一)
  14. vue 父子之间通信及非父子之间通信
  15. vue 获取跳转上一页组件信息
  16. c++ 设计一个立方体的类,求出立方体的面积和体积
  17. 利用html+javascript开发桌面软件
  18. 应聘总经理的答卷,供大家打分!(一)
  19. 汇编语言cf,of,sf,zf
  20. 进一步学习操作系统 - 哈工大李治军老师 - 学习笔记 L13L14L15

热门文章

  1. Python学习资料收集
  2. 马云接班人为什么是张勇?
  3. HDU 5183 Negative and Positive (NP) (set + 读入外挂 乱搞)
  4. 俄罗斯一家庭与世隔绝40年 不知有二战(图)
  5. 闭关修炼(八)反射机制
  6. 开源在线excel编辑器_5款免费在线PDF转换成word或者excel的分享
  7. define的边缘效应
  8. 云原生之下,百度智能云Palo如何驰骋大数据疆场?
  9. 个人求职简历(.Net)--求广州暑期实习
  10. Python制作微信二维码(动态+静态)