风控(四)——单变量分析
2019-07-29 本文已影响0人
猴小白
作为一个刚入行的数据分析职场小白,老板是不会让你直接去做模型的,很可能你的老板会跟你说:“小白啊,你去给我研究一下星座对我们是否贷款有没有影响”。虽然你脑袋上已经出现一百个问号,但是老板交代的任务还是得去好好完成以下。
先导入包
import pandas as pd
import numpy as np
读入数据
f = open('ft_zodiac.txt', encoding='utf-8')
ft_zodiac = pd.read_csv(f)
print(ft_zodiac.shape)
ft_zodiac.head()
数据维度为(23519, 4)
一般在实际业务中,我们并不会设定一个明确的界线来分割好坏客户。比如一般的中短期借贷中会认为逾期15天以上算坏客户,但其实逾期14天和15天的客户差别很难区分。因为,实际业务中会留有一个“灰色地带”。比如定义逾期15天以上的为坏客户,逾期5天以内的为好客户,逾期6-14天的则定义为“灰色地带”,也就是其实是分成0,1,2三类的。
去掉“灰色地带”的数据
l = open('zodiac_label.txt')
zodiac_label=pd.read_csv(l)
ft_label = zodiac_label[zodiac_label['label'] != 2]
ft_label.head()
将特征表和标签表合并
data = pd.merge(ft_label,ft_zodiac,on = 'order_id',how = 'inner')
data.head()
计算星座坏客户比例:badrate = bad/toal
#星座
zodiac_badrate = {}
for x in zodiac_list:
a = data[data.zodiac == x]
bad = a[a.label == 1]['label'].count()
good = a[a.label == 0]['label'].count()
zodiac_badrate[x] = bad/(bad+good)
f = zip(zodiac_badrate.keys(),zodiac_badrate.values())
f = sorted(f,key = lambda x : x[1],reverse = True )
zodiac_badrate = pd.DataFrame(f)
zodiac_badrate.columns = pd.Series(['星座','badrate'])
zodiac_badrate
将星座坏客户比例可视化
from pyecharts import Line
x = zodiac_badrate['星座']
y = zodiac_badrate['badrate']
line = Line('星座')
line.add(1,x,y)
坏客户比例最高的双鱼(14%)与最低的天蝎(12%)之间差别是非常小的,所以星座这个变量可以说是作用不大。
那我们再来看看生肖。
#生肖
chinese_zodiac_badrate = {}
for x in chinese_zodiac_list:
a = data[data.chinese_zodiac == x]
bad = a[a.label == 1]['label'].count()
good = a[a.label == 0]['label'].count()
chinese_zodiac_badrate[x] = bad/(bad+good)
f = zip(chinese_zodiac_badrate.keys(),chinese_zodiac_badrate.values())
f = sorted(f,key = lambda x : x[1],reverse = True )
chinese_zodiac_badrate = pd.DataFrame(f)
chinese_zodiac_badrate.columns = pd.Series(['生肖','badrate'])
chinese_zodiac_badrate
from pyecharts import Line
x = chinese_zodiac_badrate['生肖']
y = chinese_zodiac_badrate['badrate']
line = Line('生肖')
line.add(1,x,y)
可以看到,坏客户率最高的“牛”(16%)与“狗”(11%)之间的差异还是比“星座”大的,所以可以说可能研究“生肖”这个特征是比研究“星座”这个特征意义更大的。