zoukankan      html  css  js  c++  java
  • 用户贷款风险预测—数据探索

    竞赛地址: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(统计属性银行流水表['样本标签'],统计属性银行流水表['净收入'])

     

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

    三、信用卡账单记录表

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

  • 相关阅读:
    Pascal's Triangle 2(leetcode java)
    118. Pascal's Triangle (java)
    Bulb Switcher (leetcode java)
    Lowest Common Ancestor of a Binary Search Tree(Java 递归与非递归)
    Remove Duplicate Letters(Java 递归与非递归)
    读大道至简有感
    自学Java第一周的总结
    jmeter----jpgc----ultimate thread group
    jmeter----jpgc----stepping thread group
    jmter--jpgc模块
  • 原文地址:https://www.cnblogs.com/jiegege/p/8706991.html
Copyright © 2011-2022 走看看