数据分析案例3----银行坏账率分析

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['SimHei']

# 解决负号无法正常显示的问题
plt.rcParams['axes.unicode_minus'] = False

'''
某银行的数据分析师计算坏账率
    用户ID  好坏客户   年龄   负债率     月收入    家属数量
0     1        1      45   0.802982   9120.0     2.0    
1     2        0      40   0.121876   2600.0     1.0
2     3        0      38   0.085113   3042.0     0.0
3     4        0      30   0.036050   3300.0     0.0
4     5        0      49   0.024926   63588.0    0.0
'''

data = pd.read_csv('Myxlsxdata/loan.csv', encoding='gb2312')

'''
是不是收入越高的人坏账率越低
'''
# 首先进行缺失值处理,用均值填充法
data = data.fillna({'月收入': data['月收入'].mean()})

# 对月收入进行分析
# 因为月收入属于连续值,对连续值进行分析时,我们一般都会将连续值进行离散化
# 就是将连续值进行区间分割,分成若干类别
cut_bins = [0, 5000, 10000, 15000, 20000, 100000]
income_cut = pd.cut(data['月收入'], cut_bins)

# 区间分好后就可以查看每个区间的坏账率
# 坏账率就是所有借款用户中逾期不还用户的占比
# 逾期不还的用户的好坏客户字段表记为1,按期还款的标记为0
# 坏账率 = 好坏客户字段之和(坏账客户数) / 好坏客户字段的计数(所有借款用户)
all_income_user = data['好坏客户'].groupby(income_cut).count()
bad_income_user = data['好坏客户'].groupby(income_cut).sum()
income_bad_rate = bad_income_user / all_income_user
income_bad_rate.plot.bar()
plt.show()

'''
年龄和坏账率的关系
'''
# 先对年龄进行离散值处理
age_cut = pd.qcut(data['年龄'], 6)
all_age_user = data['好坏客户'].groupby(age_cut).count()
bad_age_user = data['好坏客户'].groupby(age_cut).sum()
age_bad_rate = bad_age_user / all_age_user
age_bad_rate.plot.bar()
plt.show()

'''
家庭人口数量和坏账率的关系
'''
# 人口数量也是连续值,但因为数值不大,就当作离散值处理
all_age_fam_num = data.groupby('家属数量')['好坏客户'].count()
bad_age_fam_num = data.groupby('家属数量')['好坏客户'].sum()
fam_num_bad_rate = bad_age_fam_num / all_age_fam_num
fam_num_bad_rate.plot()
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值