一、IV计算代码
def cal_iv(df, label_col, feat_cols, bin=10):
eps = 0.0000000000001
target = label_col
re_list = []
for col in feat_cols:
ivs = []
df2 = df[[col, label_col]]
df2.dropna()
if len(df2[col].drop_duplicates()) < 10:
continue
else:
df2 = df2.sort_values(by=col, ascending=True)
count_0 = float(df2[df2[target] == 0].shape[0])
count_1 = float(df2[df2[target] == 1].shape[0])
df2['indexn'] = range(len(df2))
divs = int(len(df2) / bin)
up = math.ceil(len(df2) / divs)
df2['group'] = [int(item / divs) for item in df2['indexn']]
df3 = df2[['group', target]]
tmpdata = []
for i