【数据挖掘】金融风控 Task02 数据分析
-
- 探索性数据分析(EDA)概述
-
-
- 1 探索性数据分析概念
- 1.2 探索性数据分析目的
- 1.3 探索性数据分析(EDA)与传统统计分析(Classical Analysis)的区别
-
-
- 金融风控实战
-
- 2.1 导入所需要的库
- 2.2 文件读取
-
- 2.2.1 TSV和CSV区别
- 2.2.2 读取大文件
- 2.2.3 通过os.getcwd()查看当前工作目录
- 2.3 数据总体了解
- 2.4 查看数据中的缺失值,唯一值等
-
- 2.4.1 查看缺失值
- 2.4.2 查看唯一值
- 2.5 查看数值特征与对象类型
-
- 2.5.1 数值特征
- 2.5.1.1 查看数值特征(是数值型还是类别型)
- 2.5.1.2 划分数值型变量中的连续变量和离散型变量
- 2.5.1.3 离散型变量分析
- 2.5.1.4 连续型变量分析
- 2.5.1.5 非数值型类别变量分析
- 2.6 变量分布可视化
-
- 2.6.1 单一变量分布可视化
- 2.6.2 根据y值不同可视化x某个特征的分布
- 2.7 时间数据处理及查看
- 2.7 透视图
- 2.8 使用pandas_profiling生成数据报告
-
-
学习地址: [ https: //github.com/datawhalechina/team-learning-data-
mining/tree/master/FinancialRiskControl
](https://github.com/datawhalechina/team-learning-data-
mining/tree/master/FinancialRiskControl)
天池竞赛地址: [ https://tianchi.aliyun.com/competition/entrance/531830/introduction
](https://tianchi.aliyun.com/competition/entrance/531830/introduction)
由于之前已经参与过数据分析的入门教程,一些基础的知识点不在重复记录
本次组队内容的优点在于其系统性,通过函数实现代码封装 及整体的处理思路都值得日后去借鉴
1. 探索性数据分析(EDA)概述
1. 1 探索性数据分析概念
探索性数据分析所谓探索性数据分析( Exploratory Data Analysis )以下简称EDA,是指对已有的数据( 特别是调查或观察得来的原始数据
)在尽量少的先验假定下进行探索通过作图、制表、方程拟合、计算特征量等手段探索数据的结构和规律的一种数据分析方法。
1.2 探索性数据分析目的
- 了解整个数据集的基本情况(缺失值,异常值),对数据集进行验证是否可以进行接下来的机器学习或者深度学习建模。
- 了解变量间的相互关系,变量与预测值之间的存在关系。
- 为特征工程做准备
1.3 探索性数据分析(EDA)与传统统计分析(Classical Analysis)的区别
- 传统的统计分析方法通常是
先假设样本服从某种分布,然后把数据套入假设模型再做分析
。但由于多数数据并不能满足假设的分布,因此,传统统计分析结果常常不能让人满意。 - 探索性数据分析方法
注重数据的真实分布,强调数据的可视化
,使分析者能一目了然看出数据中隐含的规律,从而得到启发,以此帮助分析者找到适合数据的模型。“探索性”是指分析者对待解问题的理解会随着研究的深入不断变化。
传统数据分析步骤
2. 金融风控实战
参数表,已根据本节分析所得结果进行描述补充
变量 | 含义 | 数据量及类型 | 类型 |
---|---|---|---|
id | 为贷款清单分配的唯一信用证标识 | 800000 non-null int64 | 连续型数值特征 |
loanAmnt | 贷款金额 | 800000 non-null float64 | 连续型数值特征 |
term | 贷款期限(year) | 800000 non-null int64 | 离散型数值特征 |
interestRate | 贷款利率 | 800000 non-null float64 | 连续型数值特征 |
installment | 分期付款金额 | 800000 non-null float64 | 连续型数值特征 |
grade | 贷款等级 | 800000 non-null object | 类别特征:用A、B、C、D、E、F、G表示的 |
subGrade | 贷款等级之子级 | 800000 non-null object | 类别特征:每类有五个子类用如A1、A2…A5表示 |
employmentTitle | 就业职称 | 799999 non-null float64 | 连续型数值特征 :用一串编码的数字来表示的 |
employmentLength | 就业年限(年) | 753201 non-null object |
类别特征:格式为如2 |
year
homeOwnership | 借款人在登记时提供的房屋所有权状况 | 800000 non-null int64 |
有0、1、2、3、4、5六种
annualIncome | 年收入 | 800000 non-null float64 | 连续型数值特征
verificationStatus | 验证状态 | 800000 non-null int64 | 有0、1、2三种
issueDate | 贷款发放的月份 | 800000 non-null object | 非数值特征:2014-07-01形式
isDefault | 是否违约 | 0或者1 |
purpose | 借款人在贷款申请时的贷款用途类别 | 800000 non-null int64 | 离散型数值特征:0~13
postCode | 借款人在贷款申请中提供的邮政编码的前3位数字 | 799999 non-null float64 | 连续型数值特征
regionCode | 地区编码 | 800000 non-null int64 | 连续型数值特征
dti | 债务收入比 | 799761
non-null float64 | 连续型数值特征
delinquency_2years | 借款人过去2年信用档案中逾期30天以上的违约事件数 | 800000 non-null float64
| 连续型数值特征
ficoRangeLow | 借款人在贷款发放时的fico所属的下限范围 | 800000 non-null float64 | 连续型数值特征
ficoRangeHigh | 借款人在贷款发放时的fico所属的上限范围 | 800000 non-null float64 |
连续型数值特征
openAcc | 借款人信用档案中未结信用额度的数量 | 800000 non-null float64 | 连续型数值特征
pubRec | 贬损公共记录的数量 | 800000 non-null float64 | 连续型数值特征
pubRecBankruptcies | 公开记录清除的数量 | 799595
non-null float64 | 连续型数值特征
revolBal | 信贷周转余额合计 | 800000 non-null float64 | 连续型数值特征
revolUtil | 循环额度利用率,或借款人使用的相对于所有可用循环信贷的信贷金额 | 799469 non-null float64 |
连续型数值特征
totalAcc | 借款人信用档案中当前的信用额度总数 | 800000 non-null float64 | 连续型数值特征
initialListStatus | 贷款的初始列表状态 | 800000 non-null int64 | 离散型数值特征:0或者1
applicationType | 表明贷款是个人申请还是与两个共同借款人的联合申请 | 800000 non-null int64 |
离散型数值特征
earliesCreditLine | 借款人最早报告的信用额度开立的月份 | 800000 non-null object |
非数值型特征:Aug-2001
title | 借款人提供的贷款名称 | 799999 non-null float64 | 离散型数值特征:0或1
policyCode | 公开可用的策略_代码=1新产品不公开可用的策略_代码=2 | 800000 non-null float64 |
离散型数值特征
n0 | | 759730
non-null float64 | 连续型数值特征
n1 | | 759730
non-null float64 | 连续型数值特征
n2 | | 759730
non-null float64 | 连续型数值特征
n2.1 | | 759730
non-null float64 | 连续型数值特征
n4 | | 766761
non-null float64 | 连续型数值特征
n5 | | 759730
non-null float64 | 连续型数值特征
n6 | | 759730
non-null float64 | 连续型数值特征
n7 | | 759730
non-null float64 | 连续型数值特征
n8 | | 759729
non-null float64 | 连续型数值特征
n9 | | 759730
non-null float64 | 连续型数值特征
n10 | | 766761
non-null float64 | 连续型数值特征
n11 | | 730248
non-null float64 | 离散型数值特征
n12 | | 759730
non-null float64 | 离散型数值特征
n13 | | 759730
non-null float64 | 连续型数值特征
n14 | | 759730
non-null float64 | 连续型数值特征
2.1 导入所需要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
"""
python通过调用warnings模块中定义的warn()函数来发出警告。
通过下面两行代码来忽略警告
"""
import warnings
warnings.filterwarnings('ignore')
2.2 文件读取
训练集为47列,测试集为48列,具体包含内容见上面
#导入训练集
data_train=pd.read_csv('./train.csv')
data_train.head()
#导入测试集
data_test_a=pd.read_csv('./testA.csv')
2.2.1 TSV和CSV区别
- TSV是用制表符
(Tab,'\t')
作为字段值的分隔符; - CSV是用半角逗号
(',')
作为字段值的分隔符;
2.2.2 读取大文件
- 对于较大的文件,可以通过nrows来实现部分读取
#通过nrows参数,来设置读取文件的前多少行,nrows是一个大于等于0的整数。
data_train_sample = pd.read_csv("./train.csv