基于Python对Lending Club信贷业务数的分析
項目背景
作為舊金山的一家個人對個人的借貸公司,Lending Club成立于2006年。他們是第一家注冊為按照美國證券交易委員會SEC(Securities and Exchange Commission)的安全標準向個人提供個人貸款的借貸公司。與傳統借貸機構最大的不同是,Lending Club利用網絡技術打造的這個交易平臺,直接連接了個人投資者和個人借貸者,通過此種方式,縮短了資金流通的細節,尤其是繞過了傳統的大銀行等金融機構,使得投資者和借貸者都能得到更多實惠、更快捷。對于投資者來說可以獲得更好的回報,而對于借貸者來說,則可以獲得相對較低的貸款利率。
盈利模式:Lending Club的利潤主要來自對貸款人收取的手續費和對投資者的管理費,前者會因為貸款者個人條件的不同而有所起伏,一般為貸款總額的1.1-5%;后者則是統一對投資者收取一樣的1%的管理費?
特色:特別重視用戶的信用記錄,平均只有10%的申請通過信用記錄審核。這是其能吸引到很多大的投資用戶,并且風險控制和利潤都取得長足進步的主要原因。其管理層的背景及其雄厚,多位金融和政界傳奇人物,從其首輪融資即得到1000萬美元的融資便可見其規模。
2006年成立于美國加利福利尼亞州;2014年于紐交所上市,并同時開展企業貸款服務;截止到2018年底平臺累計發放貸款445億美元,平均壞賬率7.7%,年均借款利率13.38%;
LC介紹:https://www.huxiu.com/article/41472.html
文章思路:提出問題——理解數據——數據預處理——解決問題——得出結論
一 提出問題
文章主要基于Python對Lending Club信貸業務數據的分析,主要是想通過2018年Q4數據分析平臺業務特點和客戶群體特征,進而簡要分析逾期的影響因素。
一個人是否還款可以從還款能力和還款意愿來評估。下面從兩個角度進行深入分析。
1 平臺角度:平臺的數據指標更多構建來衡量結果的指標,簡要分析了解平臺整體情況。s
2 客戶角度:任何可以量化客戶的還款能力的信息均可以用作硬信息,可描述客戶還款意愿的信息則為軟信息。
二 數據理解
數據來源LC官網:https://link.zhihu.com/?target=https%3A//www.lendingclub.com/info/download-data.action
原始數據維度:103546行,145個字段。選取18個相關字典字段進行分析。
三 數據預處理
3.1 選取子集并重命名
?選取子集
used_col = ['loan_status','issue_d','loan_amnt','term','int_rate','grade','annual_inc','dti','home_ownership',
? ? ? ? ? ? ?'emp_length','purpose','addr_state','acc_now_delinq','pub_rec','delinq_2yrs','open_il_12m','open_il_24m']
used_data = loans[used_col]
# 使用rename函數對字段重命名
used_data = used_data.rename(columns={'loan_status':'貸款狀態','issue_d':'放貸日期','loan_amnt':'貸款金額',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'term':'還款期數','int_rate':'貸款利率','grade':'貸款等級',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'annual_inc':'年收入','home_ownership':'房屋所有權','dti':'負債收入比',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'emp_length':'工作年限','purpose':'貸款目的','addr_state':'申請人所在洲',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'acc_now_delinq':'拖欠賬戶數量','pub_rec':'損害公共記錄次數',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 'delinq_2yrs':'2年內違約次數','open_il_12m':'1年內分期數','open_il_24m':'2年內分期數'})
used_data2=used_data.copy() # 備份
used_data.head(3) # 查看前3行數據
3.2 處理缺失值
# 查看空值缺失值情況
def not_null_count(column):
? ? column_null = pd.isnull(column) ?#判斷某列屬性是否存在缺失值
? ? null = column[column_null]
? ? return len(null)
column_null_count = used_data.apply(not_null_count) ?
column_null_count
得知負債收入比含有28個缺失值,篩選數據來觀察
used_data.loc[used_data['負債收入比'].isnull()]
# 觀察發現眾多指標中,工齡為'n/a'的客戶缺失比例較大,所以用其均值對nan進行填充。
# 有時候也需要0填充used_data['負債收入比'].fillna(value=0)
used_data['負債收入比'] = used_data['負債收入比'].fillna(used_data.loc[used_data['工作年限']=='n/a']['負債收入比'].mean())
# 填充后觀察整體數據類型情況
used_data.info()
通過觀察可知,數據已無缺失值;浮點型數據有2個,整型有6個,字符串有9個。
其中放貸日期可以轉換為日期格式,貸款利率和工作年限可以量化,優先處理。
3.3 數據類型轉換
#?字符串轉日期格式
used_data['放貸日期'] = pd.to_datetime(used_data['放貸日期'],format='%Y/%m/%d')
#errors='coerce' 如果原始數據不符合日期的格式,轉換后的值為空值NaT
#format 是你原始數據中日期的格式
# 特殊字符串轉浮點型——貸款利率
used_data['貸款利率']= used_data['貸款利率'].str.rstrip("%").astype("float")?
# 特殊字符串轉數值——工作年限
used_data['工作年限'].value_counts()
通過觀察可知:年齡類別有12個,除小于1年('< 1 year')和空值('n/a')外,其余都可以用分列直接分列出對應的工齡,其中10+year需要二次分列。所以有兩種處理方法:
1.通過函數處理方式處理,此處選擇這種;
2.通過替換成對應年份的方法處理(后面類別數據會用到)。
# 1.編寫函數處理方式處理
def coding_y(data_y):
? ? codlist = []
? ? for i in data_y:
? ? ? ? if i == '< 1 year':
? ? ? ? ? ? cod = 0
? ? ? ? elif i == 'n/a':
? ? ? ? ? ? cod = -1
? ? ? ? else:
? ? ? ? ? ? cod = i.split(' ')[0].split('+')[0] # 先分列空格,此時只有”10+“未處理好,需再次分列+號
? ? ? ? codlist.append(cod)?
? ? cod_y = pd.Series(codlist)
? ? return cod_y
used_data['工作年限'] = coding_y(used_data['工作年限']).astype('int') #調用函數并轉換類型,方便可視化和統計
# 查看前兩行,格式已轉換
used_data.head(2)
3.4 查看整體數據情況
分別從字符串和數值類型來查看整體的數據情況,把握后面分析的重點
查看字符串型數據情況
# 通過select_dtypes函數篩選出object對象的對應信息
# 可分別得到非空值數量、unique數量,最大頻數變量,最大頻數,以及新添加一列特征變量top_pre,表示最大變量占比
used_data_des = used_data.select_dtypes(include=['object']).describe().T
used_data_des['top_pre']=used_data_des['freq']/used_data_des['count']
used_data_des
可以得出:
-
貸款狀態有7種,其中Current(未結清但無逾期)占比74.8%最高;
-
還款期數有2種,36期占比76.2%,可用于多變量分析的對比參數;
-
貸款等級有7類,是LC評定客戶的等級,C等級占比33.9%最高;
-
房產所以權有4種,其中按揭貸款接近一半;
-
貸款目的有13類,其中債務合并占比57.7%,俗稱以貸還貸,此類型客戶逾期概率高,需深入觀察;
-
申請人所在洲有49個,美國共有50各州,說明LC業務量強大;其中LC的成立地區加利福尼亞州(CA)占比13%最高
查看數值型數據情況
# 查看數值型數據情況
used_data.describe().T
四 解決問題
4.1 平臺角度-結果指標-貸款狀態分析
LC數據字典提供網站:https://help.bitbond.com/article/20-the-10-loan-status-variants-explained
LC網站與LC字典解釋有些有出入,比如說LC網站說有逾期30-90,但是LC字典只有逾期30-120比較接近;所以以下說明加入了自己的理解,不合理的歡迎指正。
綜上:可根據逾期和未逾期劃分貸款狀態
未逾期標記為1:完全還清和部分還款客戶;
逾期都標記為0:這里可以再細分寬限期和逾期
mapping_dict = {"貸款狀態": {
? ? ? ? ? ? ? ? ? ? 'Current':0,'Fully Paid':0,
? ? ? ? ? ? ? ? ? ? 'Charged Off':1,'Late (31-120 days)':1,'Default':1,
? ? ? ? ? ? ? ? ? ? 'Late (16-30 days)':1,'In Grace Period':1 }
? ? ? ? ? ? ? ? }
used_data = used_data.replace(mapping_dict)
attr = ['正常', '逾期'] ?# 名稱的順序要和標簽的順序一致
pie = Pie("貸款狀態占比")
pie.add("", attr, [int(i) for i in pd.value_counts(used_data["貸款狀態"])] ,is_label_show=True)
pie
?
?
LC正常狀態客戶占91.93%,逾期客戶占8.07%,整體情況良好;
在逾期客戶中違約占比0.008%,但委外催收占比3.5%,極有可能是將逾期120天以上的貸款全部委外給催收機構。其實這在P2P或者銀行中比較常見的,自身貸前袋中貸后都做的話業務有點大,尤其是貸后逾期嚴重的客戶比較難催,一般都會委外給專業的催收機構。
4.1.1 平臺角度-衡量指標-貸款利率&貸款金額
fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
fig.set_size_inches(12,5)
sns.distplot(used_data['貸款利率'],ax=ax1)
sns.distplot(used_data['貸款金額'],ax=ax2)
ax1.set(xlabel='貸款利率',title='貸款利率分布',)
ax2.set(xlabel='貸款金額',title='貸款金額分布')
4.1.2 平臺角度-衡量指標-貸款等級
# used_data['貸款等級'].value_counts() #查看等級排序
attr = ["C", "B","D","A","E","F","G"]
pie = Pie("貸款等級比例")
pie.add("", attr, [float(i) for i in pd.value_counts(used_data['貸款等級'])] ,is_label_show=True)
pie
貸款等級最高的C和B,占比均在30%以上,其次是A和D,占比分別是12.5%和15.3%,前四個等級(A-D)占比高達92.9%,可見LC審核之嚴格.
前面得出正常還款的客戶同樣高達90%以上,是不是這部分客戶就是A-D等級呢?逾期的客戶是哪些等級呢?
# ?使用 FacetGrid.map 構建結構化多繪圖網格,查看不同等級下貸款狀態的利率
order_dj = ['A', 'B', 'C', 'D', 'E', 'F', 'G'] # 指定貸款等級排序,方便查看等級與利率關系
g = sns.FacetGrid(used_data,row='貸款狀態',col='貸款等級',col_order=order_dj)
g.map(plt.hist, "貸款利率");
LC客戶的信用等級從A-G,等級越高,貸款利率就越小(越偏向左,第一排貸款狀態為0時更加直觀);
其中正常客戶(貸款狀態=0)分布在A-E等級。可以反應出正常還款的客戶客戶信用好,財務狀況較好,違約發生的可能性較低,因此等級越高,利率自然也相對較低。
逾期的客戶(貸款狀態=0)最多的等級是C和D。D等級占比是C等級的一半,但是逾期卻差不多,后面需查看用戶特征。
4.2 客戶角度
4.2.1 硬性信貸指標:年收入、負債收入比
fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)
fig.set_size_inches(12,5)
sns.distplot(used_data['年收入'],ax=ax1)
sns.distplot(used_data['負債收入比'],ax=ax2)
ax1.set(xlabel='年收入',title='年收入分布')
ax2.set(xlabel='負債收入比',title='負債收入比分布')
- 年收入最高為700萬,均值為8萬,75%低于10萬。LC客戶除極少部分是高收入人群外,大部分客戶收入較為一般;
- 普遍認為負債務收入比40%是臨界點,LC75%的客戶負債收入比在24.59&以下,說明客戶債務情況良好,負擔債務意愿佳;
- LC以客戶群體收入一般,但是負債情況良好,證明LC小額貸款的切入及客戶定位都非常的精準。
4.2.1 硬性信貸指標:房租所有權
# used_data['房屋所有權'].value_counts() #查看房屋所有權排序
attr = ['住房貸款', '租房', '自己所有','其他']
pie = Pie("房屋所有權占比")
pie.add("", attr, [int(i) for i in pd.value_counts(used_data["房屋所有權"])] ,is_label_show=True)
pie
- 在住房類型種類中住房貸款和租房兩者占比88%以上,說明LC客戶群體定位比較精準。
- 住房貸款占比高達49.03%,這部分客戶負債較高,個人的資金流動差,更容易貸款;
- 其次是租房39.11%,租房客戶貸款說明客戶群體較為普通,也即有可能是剛出社會不久的年輕人,收入較低支出較大,更容易貸款。
4.2.2 軟性信貸指標:工作年限
- 工作超過10的客戶遠遠高于其他年限,這部分人群成家立業,家庭開支房貸等支出大,經濟壓力大,是LC貸款客戶的最大群體。
- 其次下來是年限在2-3稍微高于其他年限,而且6-9年占比較低,可以看出消費需求大沒有多少積蓄的職場新人也是LC的重要群體之一。
4.2.2 軟性信貸指標:地域(申請人所在州)
- 客戶占比最高的地區是LC的成立地區加利福尼亞州CA,世界知名的“好萊塢”和“硅谷”均在州內,經濟活躍,消費能力強;
- 其次是紐約NY,德克薩斯州TX,佛羅里達州FL等東南沿海發達地區,排在后面的也是沿海發達地區居多,客戶普遍經濟能力強,金融意識強。
- LC公司客戶地區多分布在沿海經濟發達地區。
軟性信貸指標:貸款目的
- 57.7%的客戶貸款目的是為了債務合并,19.8%是信用卡還款,近8成的客戶是以貸還貸的,一旦資金異常,逾期概率就會很高。
4.2.3 信用指標:損害公共記錄次數2年內違約次數/拖欠賬戶數量
fig = plt.figure()
ax1 = fig.add_subplot(1, 3, 1)
ax2 = fig.add_subplot(1, 3, 2)
ax3 = fig.add_subplot(1, 3, 3)
fig.set_size_inches(18,5)
sns.countplot(used_data['損害公共記錄次數'].sort_values(),ax=ax1)
sns.countplot(used_data['2年內違約次數'].sort_values(),ax=ax2)
sns.countplot(used_data['拖欠賬戶數量'].sort_values(),ax=ax3)
ax1.set(xlabel='損害公共記錄次數',title='損害公共記錄次數分布')
ax2.set(xlabel='2年內違約次數',title='2年內違約次數分布')
ax3.set(xlabel='拖欠賬戶數量',title='拖欠賬戶數量分布')
- 超過80%的客戶無損害公共記錄次數和2年內違約次數,拖欠賬戶數量幾乎沒有,可見平臺客戶信用非常好。
4.2.4 其他指標:還款期數/1年內開立分期付款帳戶的數目/1年內開立分期付款帳戶的數目
sns.lmplot(x="1年內開立分期付款帳戶的數目", y="2年內開立分期付款帳戶的數目", col="還款期數", hue="貸款狀態", markers=["o", "x"], palette="Set1",data=used_data);
- 可以看到1年內開立分期付款帳戶的數目和2年內開立分期付款帳戶的數目成正相關;
- 逾期客戶開戶分期數少,正常的客戶開戶分期數多,可以作為區分是否逾期的一個特征。
結論
平臺運營特點
- 平臺整體運營情況良好,正常客戶占91.93%,逾期客戶占8.07%。
- 平臺以小額貸款為主,借款金額主要集中在中位數1.2萬前后;
- 平臺貸款利率相比于傳統金融機構偏高,平均利率為13.66%,最高達30.99%;
- 平臺7個貸款等級中前四占比92.9%,正常客戶集中在前5等級,逾期客戶集中在C、D等級。
客戶群體特征
綜上,評估LC客戶的還款能力和還款意愿
硬性評估:平臺客戶群體以中產階級為中堅力量,49%的客戶貸款買房、12%的可以有自己的房產。財務狀況、負債情況良好,整體還款能力不錯;
軟性評估:平臺客戶工齡以10年以上為主,主要集中在CA,NY等沿海經濟發達地區,都有一定的家庭和社會地位;近8成客戶以貸還貸,而且超過80%的客戶無損害公共記錄次數和2年內違約次數等,信用良好。
家庭社會地位,以貸還貸,信用良好逾期概率小等等都能夠反映LC客戶的償還意愿比較好。
影響客戶逾期的因素更多要從客戶角度去分析指標,上面提到的客戶角度的指標都是可以作為參考的指標。可以在貸前做用戶畫像,評分卡,建模等方式來評估。
本篇主要基于LC信貸數據簡要分析平臺業務特點和客戶特征,初步判斷影響逾期的因素,未做深入相關性分析,還有諸多不足之處,后續慢慢完善。
?
總結
以上是生活随笔為你收集整理的基于Python对Lending Club信贷业务数的分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lightgbm源论文解析:LightG
- 下一篇: 面试官提出的Io问题 如何去做解答呢?