昆山农商行用户画像——DataExplore

昆山农商行用户画像——DataExplore

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、项目背景及目的

1.1 项目背景

金融机构在高度市场竞争与业绩成长压力下,对风险管理的精准度与作业效率的要求越来越高。不管是申贷时还是审批后,每一位客户在不同的阶段都有不同的潜在风险。关于客户个人风险的预测,可采用用户画像等新技术应用,为银行等财富管理机构识别优质客户和融通资金、降低信贷风险,开拓了新的思路和方法,不但可以筛选出高风险客户,减少损失发生,也可以找出相对优质的客户群,发掘潜在机会。

1.2 项目目的

本项目基于用户的贷款逾期数据、征信数据、消费金融数据,通过对数据的多维度、精细化、关联性的挖掘,将数据抽象成标签,构建用户画像,并对用户分群,识别优质客户与高风险用户,为银行提供贷后本息催收过程的风险识别与控制。

1.3数据说明

数据包含贷款逾期数据、征信数据和百融数据:

  • 贷款数据共60个字段约61500条记录,逾期数据共13个字段约10000条记录,循环贷共66个字段约1700条记录。客户贷款信息表和逾期信息表都是借据层的原始数据,需要一定逻辑的计算汇总之后才是客户级的数据;循环贷为客户级数据,数据量较小,里面已经标注了好坏客户标签,无需再匹配。
  • 征信数据共63个字段约65000条记录
  • 百融数据包括房贷、消费贷以及循环贷数据,涉及领域丰富,内容多样化,但部分字段缺失严重。
    本项目分析中以贷款和逾期数据为主,其余数据为辅。
    其中各类数据如图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、数据读取和基本信息

数据分为三部分:贷款、逾期数据;征信数据和百融数据
分析以贷款和逾期数据为主;其余数据为辅

2.1贷款、逾期数据

2.1.1贷款信息

loan_data = pd.read_excel('昆山农商行数据/贷款、逾期数据/1客户贷款信息宽表_20170510.xlsx', na_values=['(null)','无','未知'])
loan_data.head()

在这里插入图片描述

loan_data.info()

在这里插入图片描述

loan_data.describe()

在这里插入图片描述
在这里插入图片描述

2.1.1.1占比分析
loan_data.groupby(loan_data['客户类型']).count().标识码.plot(kind = 'pie',figsize =(8,8), autopct='%1.1f%%')

在这里插入图片描述

loan_data.groupby(loan_data['性别']).count().标识码.plot(kind = 'pie',figsize =(8,8), autopct='%1.1f%%')

在这里插入图片描述

2.1.1.2时序分析
loan_data.groupby(loan_data['出生日期']).count().标识码.plot(figsize =(12,8))

在这里插入图片描述

2.1.1.3数值分布
sns.distplot(np.log(loan_data[loan_data['职业收入(元)']>0]['职业收入(元)'].dropna()), kde=False, color="blue", bins=200) # kde=False 不显示拟合曲线

在这里插入图片描述

sns.distplot(np.log(loan_data[loan_data['贷款剩余本金(元)']>0]['贷款剩余本金(元)'].dropna()), kde=False, color="blue", bins=200) # 

在这里插入图片描述

2.1.1.4唯一标识验证

借据编号不唯一,查找借据编号不唯一的原因,得到结果是抵押物认定价值发生变化,银行更新数据所致。
在这里插入图片描述

loads_duplicated_data = loan_data[loan_data['借据编号——唯一标识'].duplicated()]

在这里插入图片描述

2.1.2逾期数据

overdue_data = pd.read_excel('昆山农商行数据/贷款、逾期数据/2客户逾期信息宽表.xlsx', na_values=['(null)','无','未知'])
overdue_data.head()

在这里插入图片描述

2.1.2.1时序分析
overdue_data.groupby(overdue_data['逾期时间']).count().借据编号.plot(figsize =(12,8))

在这里插入图片描述

2.1.2.2 时间跨度分析

数据的时间跨度根据还清时间进行约束,时间跨度大概为2015.11~2017.1

# 逾期还清时间年份分布
overdue_data.groupby(overdue_data['该笔逾期还清时间'].dt.year).count().借据编号.plot(kind = 'pie',figsize =(8,8), autopct='%1.1f%%')

在这里插入图片描述

2.1.2.3 数值分布
sns.distplot(np.log(overdue_data[overdue_data['应还本金']>0]['应还本金'].dropna()), kde=False, color="blue", bins=200) 

在这里插入图片描述

sns.distplot(np.log(overdue_data[overdue_data['应还利息']>0]['应还利息'].dropna()), kde=False, color="blue", bins=200) 

在这里插入图片描述

2.1.2.4 唯一标识验证

寻找借据编号不唯一的原因,并对此进行查看,发现借据编号不唯一的原因是同一个借据编号,可能因为多次还款或反复逾期产生多条数据,导致不唯一。
在这里插入图片描述
在这里插入图片描述

# 寻找 逾期次数最多的借据编号
d_all_dict = {}
for d_id in tqdm(overdue_duplicated_data['借据编号'].unique()):
    d_data = overdue_data[overdue_data['借据编号'] == d_id]
    d_all_dict[d_id] = len(d_data)
max(d_all_dict.items(),key=lambda x:x[1])

在这里插入图片描述

2.2 循环贷信息

在这里插入图片描述

2.2.1数据关联性分析

循环贷数据量较小 且缺少逾期数据 难以单独分析
可考虑与贷款数据关联 用于字段的丰富和缺失的填补

loan_data_merge = pd.merge(loan_data,re_loan_data, left_on=['标识码'], right_on=['CUS_ID'], how='inner')
len(loan_data['标识码'].unique()), len(re_loan_data['CUS_ID'].unique()), len(loan_data_merge['标识码'].unique())

在这里插入图片描述

由此可得出,循环贷对应的1692个客户均能匹配到贷款数据中,也就是说贷款数据已经包含了循环贷数据信息,因此舍弃该数据。

2.3 征信信息

2.3.1征信数据

# 数据读取
credit_data = pd.read_excel('昆山农商行数据/昆山农商行征信数据/征信数据201704前.xlsx', na_values=['(null)','缺失','--'])
credit_data.head()

在这里插入图片描述

2.3.1.1 初步去重

发现征信数据有很多重复值,且由于缺乏时间戳,且信息冗余度较高,因此考虑针对同一个客户直接通过取median的方式去重

在这里插入图片描述
在这里插入图片描述

2.3.1.2 数据关联性分析
loan_data_merge = pd.merge(loan_data,credit_data_num, left_on=['标识码'], right_on=['客户标识码'], how='inner')
len(loan_data['标识码'].unique()), len(credit_data_num['客户标识码'].unique()), len(loan_data_merge['标识码'].unique())

在这里插入图片描述

征信数据存在的问题:
1、征信数据以记录客户违约记录为主,所以大量字段为空值 数据缺乏时间戳,且信息冗余度较高(一个客户具有多条征信数据)
2、因此数据预处理时考虑针对同一个客户直接通过取median的方式对数值型字段去重、取众数对类别型变量去重。

2.4百融信息

2.4.1 1-0 房贷_百融评分、风险规则、审批建议

在这里插入图片描述

2.4.2 2-0 消费贷_百融评分、风险规则、审批建议

在这里插入图片描述

2.4.3 3-0 循环贷_百融评分、风险规则、审批建议

在这里插入图片描述

2.4.4 数据关联性分析

bairong_data_merge1020 = pd.merge(bairong_data10,bairong_data20, left_on=['客户编号'], right_on=['客户编号'], how='inner')
bairong_data_merge1030 = pd.merge(bairong_data10,bairong_data30, left_on=['客户编号'], right_on=['客户编号'], how='inner')
bairong_data_merge2030 = pd.merge(bairong_data20,bairong_data30, left_on=['客户编号'], right_on=['客户编号'], how='inner')
len(bairong_data_merge1020['客户编号'].unique()), len(bairong_data_merge1030['客户编号'].unique()), len(bairong_data_merge2030['客户编号'].unique())

在这里插入图片描述

结果显示:三份数据对应客户编号完全独立。
百融数据存在的问题: 数据涉及领域丰富,内容多样化,但命中率偏低,且部分字段缺失严重。因此在应用时选择命中率高、并且字段完整的部分用于数据维度补齐.

三、数据预处理

3.1 数据缺失预览

3.1.1 贷款信息

import missingno
missingno.matrix(loan_data)

在这里插入图片描述

3.1.2 逾期信息

missingno.matrix(overdue_data)

在这里插入图片描述

3.2 数据整合

3.2.1整合逾期数据

# 结论:有3310个客户存在贷款逾期行为
loan_data_merge = pd.merge(loan_data,overdue_data, left_on=['标识码'], right_on=['标识码'], how='inner')
len(loan_data['标识码'].unique()), len(overdue_data['标识码'].unique()), len(loan_data_merge['标识码'].unique())
  

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值