df = pd.DataFrame({'Credit Scores':[695 ,704, 718], 'Delinquent': [True, False, True]})
df.head()
初学者 使用pandas dataFrames工作
因此,我创建了一个dataFrame,其中包括借款人在发起贷款时的信用分数以及贷款是否拖欠。我希望通过将分数四舍五入到接近10的位置(即 "信用分数":700,710,720等),然后找到每组中拖欠贷款的分数的百分比。一个样本输出可能是这样的。
Credit Score Delinquency Rate
0 700 .43
1 710 .45
2 720 .41
我不知道该怎么做,希望得到一些指导。谢谢您的指导。
我遇到了另一个问题
#round and group credit scores by 10's
df['Credit Score'] = round(df['Credit Score'], -1)
# group by credit score and sum the bool values divided by the size of each group
to_rate = df.groupby(round(df['Credit Score'], -1))['Delinquency Rate']
df['Delinquency Rate'] = to_rate.transform(sum) / to_rate.transform('size')
df.sort_values('Credit Score')
因此,当我对这些值进行排序和显示时,我注意到信用分数是重复的。我似乎没有正确地将它们分组......我应该如何解决这个问题?
Credit Score Delinquency Rate
54 450 1.0
17 470 0.0
28 470 0.0
10 480 0.5
59 480 0.5
我应该如何解决这个问题呢? 另外,有没有办法不只显示在小数点上?
我删除了这段代码,以避免规范化,但现在它没有将值四舍五入。
df['Credit Score'] = round(df['Credit Score'], -1)
新的输出 去掉上边一行
df.sort_values('Credit Score')
Credit Score Delinquency Rate
54 447 1.0
28 471 0.0
17 474 0.0
21 475 0.5
10 476 0.5
... ... ...
16 839 0.0
28 839 0.0
45 839 0.0
65 839 0.0
62 839 0.0
IIUC
# new sample df
df = pd.DataFrame({'Credit Scores':[654 ,738, 863, 649, 650],
'Delinquent': [True, False, True, True, False]})
# use round with -1 to round to the nearest 10
df['Credit Scores'] = round(df['Credit Scores'], -1)
# group by credit score and get the mean
s = df.groupby('Credit Scores')['Delinquent'].mean()
s.reset_index().plot(kind='scatter', x='Credit Scores', y='Delinquent')
Delinquent
Credit Scores
650 0.666667
740 0.000000
860 1.000000