用户贷款风险预测—数据探索

竞赛地址:http://www.pkbigdata.com/common/cmpt/%E7%94%A8%E6%88%B7%E8%B4%B7%E6%AC%BE%E9%A3%8E%E9%99%A9%E9%A2%84%E6%B5%8B_%E8%B5%9B%E4%BD%93%E4%B8%8E%E6%95%B0%E6%8D%AE.html

数据探索:

比赛一共提供五张表,分别是:

  训练数据:用户基本属性,银行流水记录,用户浏览行为,信用卡账单记录,放款时间,是否逾期

  测试数据:用户基本属性,银行流水记录,用户浏览行为,信用卡账单记录,放款时间,用户ID     最后预测这些用户ID是否会逾期

一、用户基本属性

数据一共55596条,包括六个字段(ID,性别,职业,教育程度,婚姻状况,户口类型)可以试着探索各个属性与是否逾期的关系

五个属性的数量分布

fig,ax = plt.subplots(2,3)
fig.set_size_inches(20,12)
p = sns.color_palette()
ax[0][0].bar(训练基本属性表.iloc[:,1].value_counts().index,训练基本属性表.iloc[:,1].value_counts(),color = p[0])
ax[0][0].set_xlabel(训练基本属性表.iloc[:,1].value_counts().name)

ax[0][1].bar(训练基本属性表.iloc[:,2].value_counts().index,训练基本属性表.iloc[:,2].value_counts(),color = p[1])
ax[0][1].set_xlabel(训练基本属性表.iloc[:,2].value_counts().name)

ax[0][2].bar(训练基本属性表.iloc[:,3].value_counts().index,训练基本属性表.iloc[:,3].value_counts(),color = p[2])
ax[0][2].set_xlabel(训练基本属性表.iloc[:,3].value_counts().name)

ax[1][0].bar(训练基本属性表.iloc[:,4].value_counts().index,训练基本属性表.iloc[:,4].value_counts(),color = p[3])
ax[0][0].set_xlabel(训练基本属性表.iloc[:,1].value_counts().name)

ax[1][0].set_xlabel(训练基本属性表.iloc[:,4].value_counts().name)

ax[1][1].bar(训练基本属性表.iloc[:,5].value_counts().index,训练基本属性表.iloc[:,5].value_counts(),color = p[4])
ax[1][1].set_xlabel(训练基本属性表.iloc[:,5].value_counts().name

性别中1的数量明显更多,职业中2的职业也更多,受教育程度更多是3,4,婚姻状况更多是1,3,户口类型较为平均

合并属性表和是否逾期表,查看属性与最终是否逾期之间有无明显关系

是否逾期表中的数据数量也是55596条,取值分别是0,1  其中0的标签数量明显多于1

看看用户的属性不同,逾期的比例是不是也不同,这里使用了逾期率

 

根据前面我们知道:性别中1的数量明显更多,职业中2的职业也更多,受教育程度更多是3,4,婚姻状况更多是1,3,户口类型较为平均

在逾期情况中发现,性别未知的逾期比例最高,2职业最多但是逾期最少,估计是白领。婚姻状况最多是1,3,逾期中最高的是0,5估计是离异等

以上就是全部的属性这个表的分析,接下来看看别的表

 二、银行流水记录

银行流水记录表,表中主要是用户支出收入以及工资收入情况,汇总用户的这段时间的总收入总支出合并到前面的统计属性表中去,主要的明细还是支出,数据一共六百多万条

#统计每个用户的支出,收入,工资收入合并到属性表中去
用户支出 = 训练银行流水记录表[训练银行流水记录表['交易类型'] == 1].groupby('用户ID',as_index=False)['交易金额'].agg({'支出次数':np.size,'支出总金额':np.sum})
用户收入 = 训练银行流水记录表[训练银行流水记录表['交易类型'] == 0].groupby('用户ID',as_index=False)['交易金额'].agg({'收入次数':np.size,'收入总金额':np.sum})
工资收入 = 训练银行流水记录表[训练银行流水记录表['工资收入标记'] == 1].groupby('用户ID',as_index=False)['交易金额'].agg({'工资收入次数':np.size,'工资总金额':np.sum})
统计属性银行流水表 = pd.merge(统计属性表,用户支出,how='left')
统计属性银行流水表 = pd.merge(统计属性银行流水表,用户收入,how='left')
统计属性银行流水表 = pd.merge(统计属性银行流水表,工资收入,how='left')

并不是每个用户都有这些数据,所以记得连接时候要用left啊,然后缺失值我们用0填充

#看看支出,收入,工资收入与是否逾期的关系
fig,ax = plt.subplots(2,3)
fig.set_size_inches(18,12)
ax[0][0].scatter(统计属性银行流水表['样本标签'],统计属性银行流水表['支出次数'],color = p[0])
ax[0][0].set_xlabel('支出次数')
ax[1][0].scatter(统计属性银行流水表['样本标签'],统计属性银行流水表['支出总金额'],color = p[1])
ax[1][0].set_xlabel('支出总金额')

ax[0][1].scatter(统计属性银行流水表['样本标签'],统计属性银行流水表['收入次数'],color = p[2])
ax[0][1].set_xlabel('收入次数')
ax[1][1].scatter(统计属性银行流水表['样本标签'],统计属性银行流水表['收入总金额'],color = p[3])
ax[1][1].set_xlabel('收入总金额')

ax[0][2].scatter(统计属性银行流水表['样本标签'],统计属性银行流水表['工资收入次数'],color = p[4])
ax[0][2].set_xlabel('工资收入次数')
ax[1][2].scatter(统计属性银行流水表['样本标签'],统计属性银行流水表['工资总金额'],color = p[5])
ax[1][2].set_xlabel('工资总金额')

 在逾期1中发现收入次数和收入总金额明显少于0的,而在支出中相比差别不大。在支出相差不多情况下,收入越少自然逾期概率越大

 

#还可以增加一个收入-支出的指数
统计属性银行流水表['净收入'] = 统计属性银行流水表['收入总金额'] - 统计属性银行流水表['支出总金额'] 
fig,ax = plt.subplots()
fig.set_size_inches(6,6)
ax.scatter(统计属性银行流水表['样本标签'],统计属性银行流水表['净收入'])

 

以上就是银行流水记录表,如果想要研究还可以看看各个性别,职业,教育水平的工资、收入、支出等信息对比,这里由于研究的主要是逾期情况,因此主要跟逾期情况做对比

三、信用卡账单记录表

一共两百多万条数据,十五个字段,

 

posted @ 2018-04-03 10:44  杰哥哥是谁  阅读(3241)  评论(0编辑  收藏  举报