数据挖掘之金融风控-贷款违约预测 02数据分析

数据挖掘之金融风控-贷款违约预测 02数据分析

1. 学习目标

  • 学习如何对数据集整体概况进行分析,包括数据集的基本情况(缺失值,异常值)
  • 学习了解变量间的相互关系、变量与预测值之间的存在关系
  • 完成相应学习打卡任务

2. 学习内容

  • 数据总体了解:
    • 读取数据集并了解数据集大小,
    • 原始特征维度; 通过info熟悉数据类型;
    • 粗略查看数据集中各特征基本统计量;
  • 缺失值和唯一值:
    • 查看数据缺失值情况
    • 查看唯一值特征情况
  • 深入数据-查看数据类型
    • 类别型数据
    • 数值型数据
      • 离散数值型数据
      • 连续数值型数据
  • 数据间相关关系
    • 特征和特征之间关系
    • 特征和目标变量之间关系
  • 用pandas_profiling生成数据报告

3. 学习过程

3.1 导入库并读取数据集

# 导入所需的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
import warnings
warnings.filterwarnings('ignore')
plt.rcParams['font.sans-serif'] = 'SimHei'   ## 设置中文显示
plt.rcParams['axes.unicode_minus']=False       #解决负数坐标显示问题
%matplotlib inline
fdata_train = pd.read_csv('train .csv')
# nrows可以设置读取多少行的数,适用于特别大数据的场景,也可以分块读取
fdata_testA = pd.read_csv('testA.csv')
# 分块读取
#设置chunksize参数,来控制每次迭代数据的大小
chunker = pd.read_csv("train .csv",chunksize=5)
for item in chunker:
    print(type(item))
    print(len(item))
    # <class 'pandas.core.frame.DataFrame'>
    # 5

这里读取文件采用相对路径,保存在jupyter上,绝对路径可以如下方式读取:

ndata = pd.read_csv(r'D:\financialpredict\train .csv')

3.2 数据集基本信息

fdata_train.shape,fdata_testA.shape
# ((800000, 47), (200000, 48))
# 查看训练集与测试集的不同列
col_train = fdata_train.columns.tolist()
col_testA = fdata_testA.columns.tolist()
# 找出不同列
differentKey_testA = [x for x in col_testA if x not in col_train]
differentKey_testA
# ['n2.2', 'n2.3'],训练集中没有,测试集中有的变量
differentKey_train = [x for x in col_train if x not in col_testA]
differentKey_train
# ['isDefault'],训练集中有,测试集中没有的变量,此处为目标标签值
fdata_train.columns
'''
Index(['id', 'loanAmnt', 'term', 'interestRate', 'installment', 'grade',
       'subGrade', 'employmentTitle', 'employmentLength', 'homeOwnership',
       'annualIncome', 'verificationStatus', 'issueDate', 'isDefault',
       'purpose', 'postCode', 'regionCode', 'dti', 'delinquency_2years',
       'ficoRangeLow', 'ficoRangeHigh', 'openAcc', 'pubRec',
       'pubRecBankruptcies', 'revolBal', 'revolUtil', 'totalAcc',
       'initialListStatus', 'applicationType', 'earliesCreditLine', 'title',
       'policyCode', 'n0', 'n1', 'n2', 'n2.1', 'n4', 'n5', 'n6', 'n7', 'n8',
       'n9', 'n10', 'n11', 'n12', 'n13', 'n14', 'issueDatedt'],
      dtype='object')
      '''

各个变量的含义:

变量 描述 数据类型 备注
id 为贷款清单分配的唯一信用证标识 int64
loanAmnt 贷款金额 float64
term 贷款期限(year) int64
interestRate 贷款利率 float64
installment 分期付款金额 float64
grade 贷款等级 object 'A','B','C','D','E','F','G'风险等级
subGrade 贷款等级之子级 object 贷款等级中每一类各分五个等级
employmentTitle 就业职称 float64
employmentLength 就业年限(年) object
homeOwnership 借款人在登记时提供的房屋所有权状况 int64 0,1,2,3,4,5六种情况
annualIncome 年收入 float64
verificationStatus 验证状态 int64 0,1,2三种状态
issueDate 贷款发放的月份 object
purpose 借款人在贷款申请时的贷款用途类别 int64 14种类别
postCode 借款人在贷款申请中提供的邮政编码的前3位数字 float64
regionCode 地区编码 int64
dti 债务收入比 float64
delinquency_2years 借款人过去2年信用档案中逾期30天以上的违约事件数 float64
ficoRangeLow 借款人在贷款发放时的fico所属的下限范围 float64 美国个人评分系统计算的信用分数的下限
ficoRangeHigh 借款人在贷款发放时的fico所属的上限范围 float64 美国个人评分系统计算的信用分数的下限
openAcc 借款人信用档案中未结信用额度的数量 float64
pubRec 贬损公共记录的数量 float64
pubRecBankruptcies 公开记录清除的数量 float64
revolBal 信贷周转余额合计 float64
revolUtil 循环额度利用率,或借款人使用的相对于所有可用循环信贷的信贷金额 float64
totalAcc 借款人信用档案中当前的信用额度总数 float64
initialListStatus 贷款的初始列表状态 int64
applicationType 表明贷款是个人申请还是与两个共同借款人的联合申请 int64 0,1值表示
earliesCreditLine 借款人最早报告的信用额度开立的月份 object
title 借款人提供的贷款名称 float64
policyCode 公开可用的策略_代码=1新产品不公开可用的策略_代码=2 float64 仅一个值,为1
n系列匿名特征 匿名特征n0-n14,为一些贷款人行为计数特征的处理 float64
isDefault 是否违约 int64 违约=1,未违约=0
fdata_train.info()

以下截取部分结果
在这里插入图片描述

fdata_train.describe()

仅显示部分
在这里插入图片描述

3.3 查看缺失值、唯一值等

# 查看缺失值
print(f'There are {fdata_train.isnull().any().sum()} columns in train dataset with missing values.')
# There are 22 columns in train dataset with missing values.
print(f'There are {fdata_testA.isnull().any().sum()} columns in train dataset with missing values.')
# There are 21 columns in train dataset with missing values.
# 查看缺失值大于50%的特征
nullrate_fea_dict = (fdata_train.isnull().sum()/len(fdata_train)).to_dict() # 每个特征的空值占比,转换为字典
fea_null_morethanHalf = {
   } # 缺失值超过50%的特征
for key,value in nullrate_fea_dict.items():
    if value > 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值