Task2 数据分析
第二部分为数据分析部分,我们先来了解数据。
数据分析目的:
1.EDA价值主要在于熟悉了解整个数据集的基本情况(缺失值,异常值),对数据集进行验证是否可以进行接下来的机器学习或者深度学习建模.
2.了解变量间的相互关系、变量与预测值之间的存在关系。
3.为特征工程做准备
2.1 代码示例
2.1.1 导入数据分析及可视化过程需要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
import warnings
warnings.filterwarnings('ignore')
2.2.2 读取文件
data_train = pd.read_csv('./train.csv')
data_test_a = pd.read_csv('./testA.csv')
若文件特别大,可以用nrows参数来读取部分,通过设置读取文件的前多少行,nrows是一个大于等于0的整数。
data_train_sample = pd.read_csv("./train.csv",nrows=5)
2.2.3 总体了解
查看数据集的样本个数和原始特征维度
通过info()熟悉数据类型
总体粗略的查看数据集各个特征的一些基本统计量
显示数据的前3行和后3行
2.3.4查看数据集中特征缺失值,唯一值等
查看缺失值
具体查看缺失特征及缺失率
- 纵向了解主要目的在于查看某一列nan存在的个数是否真的很大,如果缺失值存在过多,说明这一列对label的影响几乎不起作用了,可以考虑删掉。如果缺失值很小一般可以选择填充。
- 横向比较,如果在数据集中,某些样本数据的大部分列都是缺失的且样本足够的情况下可以考虑删除。
查看训练集测试集中特征属性只有一值的特征
总结:
上面47列数据中有22列缺少数据,‘policyCode’具有一个唯一值(或全部缺失),有很多连续变量和一些分类变量。
2.3.5 查看特征的数值类型有哪些,对象类型有哪些
- 特征一般由类别型特征和数值型特征组成,且数值型特征又分为连续型和离散型。
- 类别型特征既具有非数值关系,也具有数值型关系。比如:‘grade’中的等级A,B,C等,它只是单纯的分类还是说A优于其他要结合业务进行判断。
- 数值型特征通常是可以直接入模的,但往往风控人员要对其做分箱,转化为WOE编码进而做标准评分卡等操作。从模型效果上来看,特征分箱主要是为了降低变量的复杂性,减少变量噪音对模型的影响,提高自变量和因变量的相关度,从而使模型更加稳定。
查看每个类别变量
category_col=category_fea+numerical_noserial_fea
for i in category_col:
print(i,data_train[i].value_counts())
grade B 233690
C 227118
A 139661
D 119453
E 55661
F 19053
G 5364
Name: grade, dtype: int64
subGrade C1 50763
B4 49516
B5 48965
B3 48600
C2 47068
C3 44751
C4 44272
B2 44227
B1 42382
C5 40264
A5 38045
A4 30928
D1 30538
D2 26528
A1 25909
D3 23410
A3 22655
A2 22124
D4 21139
D5 17838
E1 14064
E2 12746
E3 10925
E4 9273
E5 8653
F1 5925
F2 4340
F3 3577
F4 2859
F5 2352
G1 1759
G2 1231
G3 978
G4 751
G5 645
Name: subGrade, dtype: int64
employmentLength 10+ years 262753
2 years 72358
< 1 year 64237
3 years 64152
1 year 52489
5 years 50102
4 years 47985
6 years 37254
8 years 36192
7 years 35407
9 years 30272
Name: employmentLength, dtype: int64
issueDate 2016-03-01 29066
2015-10-01 25525
2015-07-01 24496
2015-12-01 23245
2014-10-01 21461
…
2007-08-01 23
2007-07-01 21
2008-09-01 19
2007-09-01 7
2007-06-01 1
Name: issueDate, Length: 139, dtype: int64
earliesCreditLine Aug-2001 5567
Aug-2002 5403
Sep-2003 5403
Oct-2001 5258
Aug-2000 5246
…
Dec-1960 1
Apr-1958 1
Jul-1955 1
Dec-1951 1
Mar-1957 1
Name: earliesCreditLine, Length: 720, dtype: int64
term 3 606902
5 193098
Name: term, dtype: int64
homeOwnership 0 395732
1 317660
2 86309
3 185
5 81
4 33
Name: homeOwnership, dtype: int64
verificationStatus 1 309810
2 248968
0 241222
Name: verificationStatus, dtype: int64
isDefault 0 640390
1 159610
Name: isDefault, dty