项目背景:
选题出自阿里天池大赛——金融风控_贷款违约预测。赛题以金融风控中的个人信贷为背景,要求选手根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款。
*以下作图基于一个前提假设,认为字段中唯一值较少的特征变量离散型变量,连续性加强的特征变量为连续型变量。
主要分析内容:
第一组图
1、
*展示训练数据集中的各个字段的缺失情况。
#查看有缺失的特征属性
train_null_data=train_data[has_null.index]
train_null_data.isnull().sum().plot(kind='barh')
for x,y in enumerate(has_null):
plt.text(y+500,x,y,fontsize=9)
plt.title('the number of queshi')
plt.savefig('tmp_pictures/queshi_fenbu.jpg',bbox_inches='tight')
2、
展示离散型特征变量中各个类别在不同相应变量上的分布情况
def duijizhu_hebing(data,n):
figure,axes=plt.subplots(10,2,figsize=(12,4*n))
count_in_feature={}
for each in data.columns:
if each not in ['isDefault','policyCode']:
count_in_feature[each]=data[each].unique().shape[0]
#选择不同值最少的n个特征
min_n=pd.DataFrame([count_in_feature]).T.sort_values(by=0)[:10]
#画出这n个特征中每个值对应是否违约的分布情况
for each in min_n.index:
i=min_n.index.tolist().index(each)
data.groupby(by=each).isDefault.value_counts().unstack('isDefault').plot(kind='bar',stacked=True,ax=axes[i,0])
tmp=data.groupby(by=each).isDefault.value_counts().unstack('isDefault')
#对临时数据集进行规格化
tmp.div(tmp.sum(1).astype('float'),axis=0).plot(kind='bar',stacked=True,ax=axes[i,1])
plt.savefig('tmp_pictures/aaaa.jpg')
duijizhu_hebing(train_data,10)
*此处取离散程度最强的前十个特征变量进行作图(数量可以根据自己的需求拟定),输出如下图片
3、
类似于第二张图,在此基础上添加数值,完整代码如下:
def biliduiji(data,list_,canzhao,path):
for each in list_:
#画布
figure,axes=plt.subplots(1,1,figsize=(8,data[each].unique().shape[0]*0.3))
#组合
tmp=data.groupby(each)[canzhao].value_counts().unstack(canzhao)
tmp['total']=tmp.sum(axis=1)
tmp=tmp.drop('total',axis=1)
#归一
b=tmp.div(tmp.sum(1).astype('float'),axis=0)
b=b.round(2)
b=b.fillna(0)
#作图
b.plot(kind='barh',stacked=True,ax=axes,width=0.7)
plt.yticks(fontsize=10)
plt.legend(loc='lower right')
#数据
for col in b:
for y,x in enumerate(b[col].values):
if x!=0:
plt.text(x*0.5+sum(b.iloc[y][:b.columns.tolist().index(col)]),y-0.1,x,fontsize=10)
plt.title(f'{each} for {canzhao}',fontsize=14)
plt.savefig(f'{path}/{each} for {canzhao}.jpg',bbox_inches='tight')```
*此函数中一共有四个参数,分别是需要处理的数据集,需要分析的字段,选择的分类参照变量,保存路径。可以根据自己的需要输出任意数据集中的任意字段基于某特征的分类情况。
输出结果如下
通过以上三组图片已经可以对数据集中蕴含的基本规律做出描述分析。
第二组图
这部分选用数据集较小的tips数据
1、相关关系图
2、散点图
总结
两组图之间似乎没有任何衔接关系,但通过第二组图可以联想到,如果同样是seaborn绘制第一组数据中的堆积柱状图,可以一定程度上减少代码的复杂性,但第一组图的代码中包含的功能较多,对于指定的业务场景复用性较强。