image.png
image.png
对星座列 'zodiac' 和 'label' 列进行单变量分析
1.拿出所有的星座,set去重
>> zodiac_list = set(data['zodiac'])
{'双子座',
'双鱼座',
'处女座',
'天秤座',
'天蝎座',
'射手座',
'巨蟹座',
'摩羯座',
'水瓶座',
'狮子座',
'白羊座',
'金牛座'}
2.创建星座和对应的badrate字典,保存for循环的结果
>> zodiac_badrate = {}
>> for x in zodiac_list:
# 循环后 a 第一个是双子座,然后拿到双子座的所有样本
a = data[data['zodiac']==x]
# 取双子座中坏人的数量
bad = len(a[a['label']==1])
# 取双子座中好人的数量
good = len(a[a['label']==0])
zodiac_badrate[x] = bad/(bad+good)
>> zodiac_badrate
{'双子座': 0.1312410841654779,
'双鱼座': 0.14873646209386282,
'处女座': 0.13035143769968052,
'天秤座': 0.12461252324860508,
'天蝎座': 0.12005028284098052,
'射手座': 0.14480286738351256,
'巨蟹座': 0.1408351026185421,
'摩羯座': 0.12920489296636087,
'水瓶座': 0.140117994100295,
'狮子座': 0.12760416666666666,
'白羊座': 0.13455414012738853,
'金牛座': 0.12259059367771781}
3.badrate排序
# 然后希望badrate从大到小排列
f = zip(zodiac_badrate.keys(),zodiac_badrate.values())
f = sorted(f,key = lambda x :x[1],reverse = True)
zodiac_badrate = pd.DataFrame(f,columns = ['星座','badrate'])
# 输出zodiac_badrate结果
星座 badrate
0 双鱼座 0.148736
1 射手座 0.144803
2 巨蟹座 0.140835
3 水瓶座 0.140118
4 白羊座 0.134554
5 双子座 0.131241
6 处女座 0.130351
7 摩羯座 0.129205
8 狮子座 0.127604
9 天秤座 0.124613
10 金牛座 0.122591
11 天蝎座 0.120050
网友评论