金融风控实战——生肖属性单变量分析

导入相关的包

import pandas as pd
import numpy as np

读取数据集

ft_zodiac = pd.read_csv('ft_zodiac.txt')
zodiac_label = pd.read_csv('zodiac_label.txt')

查看数据集信息

ft_zodiac.head()

在这里插入图片描述

len(set(ft_zodiac.zodiac)) #查看12个属性是否都有
#12
len(set(ft_zodiac.chinese_zodiac))  #查看12个生肖是否都有
#12

ft_zodiac.shape  #查看id是否有重复
#(23519, 4)
#len(set(ft_zodiac.order_id))
zodiac_label.head()

在这里插入图片描述

set(zodiac_label.label)
#{0, 1, 2}

定义好人和坏人的标签

pd15作为好坏的分割节点。>15 为坏人,<15为好人?
15天以上的人为坏,标签为1;5天以内的人为好标签为0;5至15天的标签为2。

ft_label = zodiac_label[zodiac_label["label"] != 2] #挖个洞,把2类标签的客户删去
ft_label.head()

在这里插入图片描述

两张表进行拼接

data = pd.merge(ft_label,ft_zodiac,on = 'order_id',how = "inner") #按照order_id拼接,取交集拼接

在这里插入图片描述

计算不同星座对应的坏账率

zodiac_list = set(data.zodiac)
chinese_zodiac_list = set(data.chinese_zodiac)

创建字典,来表示星座及对应的坏账率

#星座
#badrate = bad/total
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)
    
zodiac_badrate
#{'摩羯座': 0.12920489296636087,
# '天蝎座': 0.12005028284098052,
# '处女座': 0.13035143769968052,
# '天秤座': 0.12461252324860508,
# '水瓶座': 0.140117994100295,
# '白羊座': 0.13455414012738853,
# '狮子座': 0.12760416666666666,
# '射手座': 0.14480286738351256,
# '巨蟹座': 0.1408351026185421,
# '双子座': 0.1312410841654779,
# '金牛座': 0.12259059367771781,
# '双鱼座': 0.14873646209386282}

按照坏账率从高到低进行排序

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

在这里插入图片描述

将不同星座坏账率进行画图标表示

import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["Heiti TC"]
plt.figure(figsize=(9,6),dpi=80)
plt.xlabel("星座")
plt.ylabel("badrate")
plt.ylim(0,0.16)
plt.plot(zodiac_badrate["星座"],zodiac_badrate["badrate"])

在这里插入图片描述

计算不同生肖对应的坏账率

创建字典,来表示生肖及对应的坏账率

#星座
#badrate = bad/total
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)
    
chinese_zodiac_badrate
# {'虎': 0.15165876777251186,
#  '鼠': 0.1340602950609365,
#  '猪': 0.14269406392694065,
#  '狗': 0.11052009456264776,
#  '羊': 0.11335403726708075,
#  '鸡': 0.12846998063266624,
#  '龙': 0.1439084219133279,
#  '马': 0.12053872053872054,
#  '牛': 0.1578112609040444,
#  '蛇': 0.12789827973074047,
#  '兔': 0.1502843216896832,
#  '猴': 0.12008141112618724}

按照坏账率从高到低进行排序

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.head()

在这里插入图片描述

将不同生肖坏账率进行画图标表示

plt.figure(figsize = (9,6),dpi = 80)
plt.plot(chinese_zodiac_badrate["生肖"],chinese_zodiac_badrate["badrate"])
plt.xlabel("生肖")
plt.ylabel("badrate")
plt.ylim(0,0.16)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值