将列值四舍五入到最接近的10,然后显示满足条件的每组的百分比。

问题描述 投票:0回答:1
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
python pandas dataframe data-science rounding
1个回答
2
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.