不同年齡客戶的通過率和逾期率計算
違約分析,主流方法是通過邏輯回歸來做模型,調整關鍵的特徵,提升違約率預測的準確率。筆者這裡的數據,有價值的特徵太少,樣本不均衡問題突出,下面主要做做描述統計、探索性分析,尋找一些有意思的現象。
用pandas讀入數據,我們看到年齡特徵中有一些異常值和缺失值:
import pandas as pdndf = pd.read_csv("data.csv",encoding="gbk")nprint (df.shape)nprint(df[年齡].value_counts(ascending=True))n
奇怪的是,年齡也能夠錄入負數,還成功申請貸款,並結清了:
刪去年齡太大或太小的樣本,保留【18歲-60歲】:
df.rename(columns=lambda x:x.replace(年齡,Age), inplace=True)ndf.rename(columns=lambda x:x.replace(借款狀態,Status), inplace=True)ndf1=df[(df[Age]<=60) & (df[Age]>=18) ]n
下面有兩個分析思路:一是比較不同年齡的審批通過率,二是通過貸款中不同年齡的逾期率。
import numpy as npnimport matplotlib.pyplot as pltndf2=df1.copy()ndf2[Status]=df2[Status].replace("FAILED",0).replace("REPAYING",1).replace("CLOSED",1).replace("BADDEBT",1).replace("OVERDUE",1)nprint(df2[Status].value_counts())ntable2=pd.pivot_table(df2,index=["Age"],values=["Status"],aggfunc=[np.mean])ntable2.plot(kind=line,title=uStatus)nplt.show()n
用數據透視表,計算出每個年齡的審批通過率:
18歲的客戶,申請了105筆,通過了98筆,通過率93.3333%(98/105)。
結論:25歲左右客戶通過率最低。
再看,審批通過的客戶,逾期率與年齡的關係:
df3=df1.copy()ndf3=df3[(df3[Status] != "FAILED")]ndf3[Status]=df3[Status].replace("REPAYING",0).replace("CLOSED",0).replace("BADDEBT",1).replace("OVERDUE",1)ntable3=pd.pivot_table(df3,index=["Age"],values=["Status"],aggfunc=[len,np.sum,np.mean])nprint (table3.shape)nprint(table3)n
30歲的客戶,放款量25488筆,逾期量290筆,逾期率1.1378%(290/25488)
通過圖片能看的更清楚一些:
的確,30歲左右的客戶,逾期率最高。
25歲以下和48歲以上的樣本量太少,有一些偶然因素。
推薦閱讀: