基于python做Prosper借貸平臺影響違約率探索性分析

一、摘要

本文詳述了如何通過數(shù)據(jù)預覽,基本數(shù)據(jù)分析震肮、探索式數(shù)據(jù)分析称龙,缺失數(shù)據(jù)填補等方法,實現(xiàn)對kaggle上Prosper借貸平臺貸款者還款與否這一分類問題如何進行數(shù)據(jù)分析的具體探索式實踐戳晌。并分別對2009.07.01前后的模型進行建模分析對比鲫尊,得出兩個模型的預測準確率和變量對模型的重要性對比分析,明確看出2009.07.01前后平臺的模型明顯有很大的不同沦偎。

二疫向、項目內容介紹

Prosper LoanData是由Joshua Schnessl從Udacity Data Analyst Nanodegree上把數(shù)據(jù)放到kaggle的上供感興趣的人分析的一個實例項目,這并非一個競賽項目豪嚎。本人試圖通過訓練數(shù)據(jù)集分析出什么類型的借款人更可能不違約搔驼,并預測出測試數(shù)據(jù)集中的每筆貸款是否違約。

三疙渣、數(shù)據(jù)變量

四匙奴、數(shù)據(jù)預處理

在加載數(shù)據(jù)之前堆巧,先通過如下代碼加載之后會用到的相應的庫妄荔。

讀入數(shù)據(jù)

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import random
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_curve, auc
loanData=pd.read_csv("D:\\打包7.2\\prosperLoanData.csv")
4.0數(shù)據(jù)預覽

先觀察數(shù)據(jù)

loanData.head()
loanData.info()
loanData.shape
image.png
查看數(shù)據(jù)的分布情況

可返回變量和觀測的數(shù)量、缺失值和唯一值的數(shù)目谍肤、平均值啦租、分位數(shù)等相關信息

loanData.describe()
image.png

從上可見,數(shù)據(jù)集包含81個變量荒揣,113,937條數(shù)據(jù)篷角,由于數(shù)據(jù)變量太多,本文只對重要變量作解釋說明系任,若需詳細了解變量含義恳蹲,請點擊變量詞典。
ListingCreationDate:表創(chuàng)建時間(可能是交易開始計息時間)
LoanStatus:貸款狀態(tài)(Completed俩滥、Current嘉蕾、Defaulted、Chargedoff等)
EmploymentStatus:受雇傭狀態(tài)(Self-employed霜旧、Employed等)
EmploymentStatusDuration:受雇傭狀態(tài)持續(xù)時間(以月為計算單位)
IsBorrowerHomeowner:借款人是否擁有房屋
CreditScoreRangeLower/CreditScoreRangeUpper:消費信用最低/最高分
InquiriesLast6Months:最近6個月查過多少次征信記錄
BorrowerRate:借款標利率,作為P2P平臺資金借貸價格的代理變量,BorrowerRate不包含其他費用,是籌資者付給投資人的報酬,也是融資最直接和最重要的成本,其體現(xiàn)了資金供求雙方在綜合考慮各種因素情況下所認可的資金使用成本.
Term:期限,籌資者通過網(wǎng)貸平臺進行借款時所承諾的最終償還期限,借款期限體現(xiàn)該資產(chǎn)的流動性,期限較長的資產(chǎn)應存在著流動性溢價(利率上漲).
CreditGrade/ProsperRating(Alpha):信用等級,前者反映的是2009年7月1日前客戶的信用等級,后者反映的是2009年7月1日后的信用等級.信用等級越高,其償債能力越強.
CreditScore:由消費信用公司提供的消費信用評分,類似于國內的芝麻信用分错忱。
StatedMonthlyIncome:客戶月收入,月收入越高,投資者對該借款本息按時回流越有信心.
DelinquenciesLast7Years:信用資料提交時借款人過去7年違約次數(shù),該指標在一定程度上可以體現(xiàn)借款標的發(fā)布者的信用狀況
BankCarduse:信用資料提交時借款人信用卡使用額度和信用卡總透支額度的百分比,本文將這個數(shù)據(jù)分成四組(mild use;medium use;heavy use;super use)
LoanOriginalAmount:借款人在借款時已經(jīng)向prosper借入的資金,如果沒有歷史記錄則為0,顯然,借入本金越多,其還款壓力越大,但是這項指標大的話也可能說明該客戶對prosper依賴性較強.
DebtToIncomeRatio:借款人的債務收入比,債務收入比越高說明籌資者財務狀況越差,還款能力較低.其向P2P平臺借款時,投資者應要求有更高的回報.
Occupation:貸款人職業(yè)
IncomeRange:貸款人年收入范圍
BorrowerState:貸款人所在州
Customer_clarify:0或NA是未在prosper貸過款的客戶,反之是貸過款的。

4.1 LoanStatus數(shù)據(jù)變換

平臺把借款狀態(tài)分為12種:Cancelled(取消)挂据、Chargedoff(沖銷以清,投資人有損失)、Completed(正常完成崎逃,投資人無損失)掷倔、Current(貸款還款中)、Defaulted(壞賬个绍,投資人有損失)勒葱、FinalPaymentInProgress(最后還款中勺像,投資人無損失)、Past Due(逾期還款错森,投資人無損失)吟宦,Cancelled的只有5筆,所以直接去掉涩维。
本文依據(jù)交易是在進行正常還款期內還是已關閉將LoanStatus分成兩組殃姓,并根據(jù)投資人有無損失將已關閉的交易分成Completed和Defaulted:Current(貸款還款中)、Defaulted(包含Defaulted瓦阐、Chargedoff)蜗侈、Completed(包含Completed、FinalPaymentInProgress睡蟋、Past Due)三組踏幻。代碼定義函數(shù)如下:

貸款狀態(tài)變換

def loan_status(s):#該函數(shù)主要功能把狀態(tài)最終分為4種情況包括壞賬,取消,貸款還款中,正常還款(正常完成,最后還款中,逾期還款)
    if s=='Chargedoff':#Chargedoff(沖銷,投資人有損失)
        a='Defaulted'  #Defaulted(壞賬戳杀,投資人有損失)
    elif s=='Defaulted':#Defaulted(壞賬该面,投資人有損失)
        a = 'Defaulted'#Defaulted(壞賬,投資人有損失)
    elif s=='Cancelled':#Cancelled(取消)
        a='Cancelled'   #Cancelled(取消)
    elif s == 'Current':#Current(貸款還款中)
        a = 'Current'#Current(貸款還款中)
    else:
        a='Completed'#Completed(正常完成信卡,投資人無損失)
    return a

將數(shù)據(jù)進行轉換隔缀,設置為Status變量:
LoanStatus數(shù)據(jù)字段轉換為Status(來自loan_status函數(shù)轉換了貸款狀態(tài))

    #'Cancelled狀態(tài)的樣本個數(shù)只有5個,直接刪除
    loanData=loanData[loanData['Status']!='Cancelled']
    loanData.info()
    print(loanData.head())
    loanData.columns
4.2 BankcardUtilization數(shù)據(jù)變換

信用資料提交時借款人信用卡使用額度和信用卡總透支額度的百分比,本文將這個數(shù)據(jù)分成五組(mild use傍菇、medium use猾瘸、heavy use、super use丢习、no use)牵触。對之前未在prosper的客戶建立庫,即其0或NA是未使用過prosper的客戶咐低,用no use代替揽思。使用的定義函數(shù)如下:
BankcardUtilization數(shù)據(jù)轉換
bank_card_use函數(shù)只要將使用額度和信用卡總透支額度的百分比分為五種情況Mild Use(<=0.31);Medium Use(>0.31<=0.6);Heavy Use(>0.6<=1);Super Use(>1),No Use(沒有消費)


def bank_card_use(s,oneForth = 0.31,twoForth = 0.6):#根據(jù)業(yè)務經(jīng)驗認為設置兩個閥值
if s<=oneForth:
        b='Mild Use'
    elif (s>oneForth) & (s<=twoForth):
        b='Medium Use'
    elif (s>twoForth) & (s<=1):
        b='Heavy Use'
    elif s>1:
        b='Super Use'
    else:
        b='No Use'
    return b

將數(shù)據(jù)進行轉換,設置為BankCardUse變量:
BankcardUtilization的數(shù)據(jù)轉換 quantile--分位數(shù)


oneFourth=loanData['BankcardUtilization'].quantile(0.25)#loanData['BankcardUtilization']的四位數(shù)是0.31
twoForth=loanData['BankcardUtilization'].quantile(0.5)#loanData['BankcardUtilization']的中位數(shù)是0.6
loanData['BankCardUse']=loanData['BankcardUtilization'].apply(bank_card_use)

apply當一個函數(shù)的參數(shù)存在于一個元組或者一個字典中時渊鞋,用來間接的調用這個函數(shù)绰更,并肩元組或者字典中的參數(shù)按照順序傳遞給參數(shù)
BankcardUtilization的數(shù)據(jù)轉換為BankCardUse字段(來自bank_card_use函數(shù)轉換邏輯)

4.3 LoanOriginationDate數(shù)據(jù)轉換

因為2009年7月1日是一個數(shù)據(jù)截點,因此將數(shù)據(jù)分成兩段處理锡宋,定義函數(shù)如下:
將時間分段

def date_phase(s):
    if s>='2009-07-01':
        c='After Jul.2009'
    else:
        c='Before Jul.2009'
    return c

將數(shù)據(jù)進行轉換儡湾,設置為DatePhase變量:
LoanOriginationDate的數(shù)據(jù)轉換為DatePhase字段(來自date_phase函數(shù)轉換邏輯)


loanData['DatePhase']=loanData['LoanOriginationDate'].apply(date_phase)
4.4 信用分數(shù)轉換

在變量中有信用分數(shù)兩個變量CreditScoreRangeUpper和CreditScoreRangeLower,可以通過信用分數(shù)高低范圍,將這兩個數(shù)值取平均值做計算:
對客戶的消費信用分數(shù),數(shù)據(jù)中有高低范圍,將這兩個數(shù)值取平均值做計算

loanData['CreditScore']=((loanData.CreditScoreRangeUpper+loanData.CreditScoreRangeLower)/2).round(0)#.round(0)表示去四舍五入



4.5 TotalProsperLoans

對于使用Prosper平臺使用貸款的次數(shù)變量TotalProsperLoans执俩,我們可以根據(jù)數(shù)量區(qū)分新老用戶徐钠,0或NA是未使用過prosper的客戶,反之是使用過的,定義的區(qū)分函數(shù)如下:
0或NA是未使用過prosper的客戶,反之是使用過的

def customer_clarify(s):
    if s>0:
       d='Previous Borrower'
    else:
       d='New Borrower'
    return d
#將數(shù)據(jù)進行轉換役首,設置為CustomerClarify變量:
#TotalProsperLoans的數(shù)據(jù)轉換為CustomerClarify字段(來自#customer_clarify函數(shù)邏輯轉換)

  
loanData['CustomerClarify']=loanData['TotalProsperLoans'].apply(customer_clarify)


五尝丐、探索性分析

5.1 年收入越高显拜,違約率越低

通過統(tǒng)計出每個年收入段貸款如期還款筆數(shù)和違約筆數(shù),并計算出每段貸款如期還款筆數(shù)和違約筆數(shù)所占的比例爹袁。代碼如下:
輸出loanStatus和收入的情況分配


 loanData[['Status']]incomeRage = loanData.groupby(['Status', 'IncomeRange'])['Status'].count().unstack(0)


在用pandas進行數(shù)據(jù)重排時远荠,經(jīng)常用到stack和unstack兩個函數(shù)。stack的意思是堆疊失息,堆積譬淳,unstack即“不要堆疊”,我對兩個函數(shù)是這樣理解和區(qū)分的盹兢。
常見的數(shù)據(jù)的層次化結構有兩種邻梆,一種是表格,一種是“花括號”绎秒,即下面這樣的l兩種形式:
常見的數(shù)據(jù)的層次化結構有兩種浦妄,一種是表格,一種是“花括號”见芹,即下面這樣的l兩種形式:

 index = ['Not displayed', 'Not employed', '$1-24,999', '$25,000-49,999', '$50,000-74,999', '$75,000-99,999', '$100,000+']
incomeRage = incomeRage[['Completed','Defaulted']].reindex(index)#配置索引


#壞賬/壞賬+正常

defaultRate = (incomeRage['Defaulted'] / (incomeRage['Defaulted'] + incomeRage['Completed'])).reindex(index)#print(defaultRate)#壞賬百分之
defaultRate1=defaultRate[['Not displayed','Not employed','$1-24,999','$25,000-49,999','$50,000-74,999','$75,000-99,999','$100,000+',]]#剔除$0為空NaN的值
print(defaultRate1)#壞賬百分之
# 違約率情況
y = list(defaultRate1.values)
    fig1 = plt.figure(1)
    # fig1.set_size_inches(15.5, 7.5)
    ax1 = fig1.add_subplot(2, 1, 2)
    x = np.arange(len(index)) + 1
    ax1.bar(x, y, width=0.4)
    ax1.set_xticks(x)
    ax1.set_xticklabels(index, rotation=0, fontsize=12)
    ax1.set_ylabel('違約百分率(%)', fontsize=14)
    for a, b in zip(x, y):
        plt.text(a, b + 0.001, '%.2f%%' % (b * 100), ha='center', va='bottom', fontsize=10)
    ax2 = fig1.add_subplot(2, 1, 1)
    incomeRage.plot(kind='bar', ax=ax2)
    ax2.set_xticklabels(index, rotation=0, fontsize=12)
    ax2.set_ylabel('數(shù)量', fontsize=14)
    plt.show()

image.png

如圖5-1所示剂娄,隨著年收入的增加,違約比例在逐漸下降辆童。

5.2 負債水平低的借款人違約率低于負債水平高的人

按照常識來說債務收入比(DebtToIncomeRatio)低的人更具備還款能力宜咒,違約可能性應該低于債務收入比高的人惠赫。

DefaultedRatio=loanData[loanData['Status']=='Defaulted']['DebtToIncomeRatio']
 CompletedRatio=loanData[loanData['Status']=='Completed']['DebtToIncomeRatio']
 print(DefaultedRatio.shape)
 print(CompletedRatio.shape)
 ax=CompletedRatio.hist(bins=1000,color='g',label='Compeleted')
 ax=DefaultedRatio.hist(bins=1000,color='b',label='Defaulted')
 ax.set_xlim([0,1])
 plt.xlabel('DebtToIncomeRatio',fontsize=14)
 plt.ylabel('數(shù)量',fontsize=14)
 plt.legend(loc='best')
 plt.show()
image.png

如圖5-2所示把鉴,DebtToIncomeRatio < 0.6的借款人中,違約筆數(shù)小于未違約的筆數(shù)儿咱。從下圖也可看出大部分借款人的債務收入比低于0.25庭砍,說明平臺違約的整體風險可控。

5.3 透支比例非常高的人違約概率大

根據(jù)BankCardUse與Status混埠,獲取信用卡使用情況和違約情況的分布情況,代碼實現(xiàn)如下:

 # 輸出loanStatus和收入的情況分配
    bankCardUse= loanData.groupby(['Status','BankCardUse'])['Status'].count().unstack(0)
    index=['Mild Use','Medium Use', 'Heavy Use', 'Super Use', 'No Use',]
    bankCardUse=bankCardUse[['Completed','Defaulted']].reindex(index)
    defaultRate = (bankCardUse['Defaulted'] / (bankCardUse['Defaulted'] + bankCardUse['Completed'])).reindex(index)
    print(defaultRate)
    # 違約率情況
    y = list(defaultRate.values)
    fig1 = plt.figure(1)
    # fig1.set_size_inches(15.5, 7.5)
    ax1 = fig1.add_subplot(2, 1, 2)
    x = np.arange(len(index)) + 1
    ax1.bar(x, y, width=0.4)
    ax1.set_xticks(x)
    ax1.set_xticklabels(index, rotation=0, fontsize=12)
    ax1.set_ylabel('違約百分率(%)', fontsize=14)
    for a, b in zip(x, y):
        plt.text(a, b + 0.001, '%.2f%%' % (b * 100), ha='center', va='bottom', fontsize=10)
    ax2 = fig1.add_subplot(2, 1, 1)
    bankCardUse.plot(kind='bar', ax=ax2)
    ax2.set_xticklabels(index, rotation=0, fontsize=12)
    ax2.set_xlabel('',fontsize=0)
    ax2.set_ylabel('數(shù)量', fontsize=14)
    plt.show()
image.png

如圖5-3所示怠缸,BankCardUse為Mild Use、Medium Use钳宪、Heavy Use時違約率在25%左右揭北,而Super Use、No Use違約率在50%左右吏颖,所以搔体,對符合這兩種情況的借款人要加強風險管控。

5.4 消費信用分低的借款人違約概率大

消費信用分(CreditScore)是衡量一個人在消費中的經(jīng)濟能力半醉,分值高的人交易更活躍疚俱、交易活動違約率更低,所以消費信用分高的人更具備還款能力缩多,違約可能性應該低于消費信用分低的人呆奕。

 creditScore=pd.DataFrame(loanData.groupby(['Status', 'CreditScore'])['Status'].count().unstack(0))
 score=pd.DataFrame(creditScore[['Completed','Defaulted']].values[2:],index=list(creditScore[['Completed','Defaulted']].index)[2:],columns=list(creditScore[['Completed','Defaulted']].columns))
    index=list(creditScore[['Completed','Defaulted']].index)[2:]
    defaultRate = (score['Defaulted'] / (score['Defaulted'] + score['Completed'])).reindex(index)
    print(defaultRate)
    ax=score.plot(kind='line',grid=True)
    ax.set_xlabel('CreditScore',fontsize=14)
    ax.set_ylabel('數(shù)量', fontsize=14)
    plt.legend(loc='best')
    plt.show()
image.png

如圖5-4所示养晋,CreditScore < 560的借款人中,違約筆數(shù)大于未違約的筆數(shù)梁钾。從下圖也可看出大部分借款人的消費信用分高于600分绳泉,說明消費信用分低的人在平臺上不容易借到錢。

5.5 信用評級高(2009.07.01之前)的人違約概率小

根據(jù)CreditGrade與Status姆泻,獲取2009年7月之前信用等級情況和違約情況的分布情況圈纺,代碼實現(xiàn)如下:

 # 輸出loanStatus和收入的情況分配
    creditGrade = loanData.groupby(['Status', 'CreditGrade'])['Status'].count().unstack(0)
    index=[ 'NC','HR','E','D', 'C','B', 'A', 'AA']
    creditGrade=creditGrade[['Completed','Defaulted']].reindex(index)
    defaultRate = (creditGrade['Defaulted'] / (creditGrade['Defaulted'] + creditGrade['Completed'])).reindex(index)
    # 違約率情況
    y = list(defaultRate.values)
    fig1 = plt.figure(1)
    # fig1.set_size_inches(15.5, 7.5)
    ax1 = fig1.add_subplot(2, 1, 2)
    x = np.arange(len(index)) + 1
    ax1.bar(x, y, width=0.4)
    ax1.set_xticks(x)
    ax1.set_xticklabels(index, rotation=0, fontsize=12)
    ax1.set_xlabel('CreditGrade', fontsize=14)
    ax1.set_ylabel('違約百分率(%)', fontsize=14)
    for a, b in zip(x, y):
        plt.text(a, b + 0.001, '%.2f%%' % (b * 100), ha='center', va='bottom', fontsize=10)
    ax2 = fig1.add_subplot(2, 1, 1)
    creditGrade.plot(kind='bar', ax=ax2)
    ax2.set_xticklabels(index, rotation=0, fontsize=12)
    ax2.set_ylabel('數(shù)量', fontsize=14)
    ax2.set_xlabel('',fontsize=14)
    plt.show()
image.png

如圖5-5所示,CreditGrade評級越高的人違約率越低麦射,大部分借款人的評級都在D級以上蛾娶。

5.6 信用評級高(2009.07.01之后)的人違約概率小

ProsperRating (Alpha)是2009年之后的信用等級變量,根據(jù)ProsperRating (Alpha)與Status潜秋,獲取2009年7月之后信用等級情況和違約情況的分布情況蛔琅,代碼實現(xiàn)如下:

 # 輸出CreditGrade','ProsperRating (Alpha)和收入的情況分配
    prosperRating= loanData.groupby(['Status', 'ProsperRating (Alpha)'])['Status'].count().unstack(0)
    index=[ 'HR','E','D','C','B',  'A', 'AA']
    prosperRating=prosperRating[['Completed','Defaulted']].reindex(index)
    defaultRate = (prosperRating['Defaulted'] / (prosperRating['Defaulted'] + prosperRating['Completed'])).reindex(index)
    # 違約率情況
    y = list(defaultRate.values)
    fig1 = plt.figure(1)
    # fig1.set_size_inches(15.5, 7.5)
    ax1 = fig1.add_subplot(2, 1, 2)
    x = np.arange(len(index)) + 1
    ax1.bar(x, y, width=0.4)
    ax1.set_xticks(x)
    ax1.set_xticklabels(index, rotation=0, fontsize=12)
    ax1.set_xlabel('ProsperRating', fontsize=14)
    ax1.set_ylabel('違約百分率(%)', fontsize=14)
    for a, b in zip(x, y):
        plt.text(a, b + 0.001, '%.2f%%' % (b * 100), ha='center', va='bottom', fontsize=10)
    ax2 = fig1.add_subplot(2, 1, 1)
    prosperRating.plot(kind='bar', ax=ax2)
    ax2.set_xticklabels(index, rotation=0, fontsize=12)
    ax2.set_ylabel('數(shù)量', fontsize=14)
    ax2.set_xlabel('', fontsize=14)
    plt.show()
image.png

如圖5-6所示。
ProsperRating (Alpha)評級越高的人違約率越低峻呛,大部分借款人的評級都在D級以上罗售。與2009.07.01之前的信用評級對比去掉了NC級,且整體違約率比之前更低钩述,說明平臺的風控模型進行了非常有成效的調整寨躁。

5.7 過去七年違約次數(shù)多的借款人違約概率大

過去七年違約次數(shù)(DelinquenciesLast7Years)能夠衡量一個人在過去七年中征信情況,違約一次或以上的人在借款時違約概率更大牙勘。

#loanData['CurrentDelinquencies']
#yes=pd.DataFrame(loanData.groupby(['Status', 'CurrentDelinquencies'])['Status'].count().unstack(0))[1:]
 def Delinquencies(h):#定義函數(shù)目的把連續(xù)數(shù)據(jù)0轉為非違約,>=1以上的數(shù)據(jù)為違約
    if h>0:
       d='Delinquencies'
    else:
       d='N0Delinquencies'
    return d
 #將數(shù)據(jù)進行轉換职恳,設置為CustomerClarify變量:
 #CurrentDelinquencies的數(shù)據(jù)轉換為Current_Delinquencies字段(來自Delinquencies函數(shù)邏輯轉換)
 loanData['Current_Delinquencies']=loanData['CurrentDelinquencies'].apply(Delinquencies)
    yes_no=pd.DataFrame(loanData.groupby(['Status', 'Current_Delinquencies'])['Status'].count().unstack(0)) 
    yes_no1=yes_no[['Completed','Defaulted']]
    #yesno=pd.DataFrame(loanData.groupby(['Status', 'Delinquencies'])['Status'].count().unstack(0))[1:]
    delinQuenciest=pd.DataFrame(loanData.groupby(['Status', 'DelinquenciesLast7Years'])['Status'].count().unstack(0))
    rating= pd.DataFrame(delinQuenciest[['Completed','Defaulted']].values[0:26], index=list(delinQuenciest[['Completed','Defaulted']].index)[0:26], columns=list(delinQuenciest[['Completed','Defaulted']].columns))
    fig1 = plt.figure(1)
    ax1 = fig1.add_subplot(2, 1, 1)
    rating.plot(kind='line',ax=ax1, grid=True)
    ax1.set_ylabel('數(shù)量', fontsize=14)
    ax1.set_xlabel('7年內的違約次數(shù)', fontsize=14)
    ax2 = fig1.add_subplot(2, 1, 2)
    yes_no1.plot(kind='bar',ax=ax2)
    ax2.set_xticklabels(list(yes_no1.index),rotation=0,fontsize=12)
    ax2.set_xlabel('7年內有無違約', fontsize=14)
    ax2.set_ylabel('數(shù)量', fontsize=14)
    plt.legend(loc='best')
    plt.show()
image.png

如圖5-7所示,DelinquenciesLast7Years的借款人中方面,違約筆數(shù)與未違約的筆數(shù)線貼合放钦。從下圖也可看出大部分借款人的DelinquenciesLast7Years 在1次以下,說明整個平臺的風險可控恭金。

5.8 受雇傭狀態(tài)持續(xù)時間長的借款人違約概率小

受雇傭狀態(tài)持續(xù)時間(EmploymentStatusDuration)可夠衡量一個人工作生活的穩(wěn)定情況操禀,受雇傭狀態(tài)持續(xù)時間長的違約的概率小。

 employmentStatus = pd.DataFrame(loanData.groupby(['Status', 'EmploymentStatusDuration'])['Status'].count().unstack(0))
    employmentStatus = pd.DataFrame(employmentStatus[['Completed','Defaulted']].values[0:120], index=list(employmentStatus[['Completed','Defaulted']].index)[0:120],columns=list(employmentStatus[['Completed','Defaulted']].columns))
    defaultRate=employmentStatus['Defaulted'] / (employmentStatus['Defaulted'] + employmentStatus['Completed'])
    fig1 = plt.figure(1)
    ax1 = fig1.add_subplot(2, 1, 1)
    employmentStatus.plot(kind='line', grid=True,ax=ax1)
    #ax1.set_xlabel('受雇傭狀態(tài)持續(xù)時間(月)', fontsize=14)
    ax1.set_ylabel('數(shù)量', fontsize=14)
    ax2 = fig1.add_subplot(2, 1, 2)
    ax2.plot(list(defaultRate.index),list(defaultRate.values),'ko--')
    ax2.set_xlabel('受雇傭狀態(tài)持續(xù)時間(月)', fontsize=14)
    ax2.set_ylabel('違約百分率(%)', fontsize=14)
    plt.legend(loc='best')
    plt.show()
image.png

如圖5-8所示横腿,隨著EmploymentStatusDuration的增長颓屑,違約概率逐漸減小。
小結
本文主要介紹數(shù)據(jù)的變量耿焊,了解主要變量的意義揪惦;根據(jù)現(xiàn)有數(shù)據(jù)變量,對其中幾個變量進行轉換搀别,便于接下來的處理丹擎;進行了描述性分析,初步了解相關變量和違約率的分布情況。
接下來蒂培,在網(wǎng)貸平臺Prosper2005~2014貸款數(shù)據(jù)分析(二)中再愈,進行缺失值的處理,2009年前后模型中個變量的重要程度护戳,以及基于2009年后模型對處于借貸狀態(tài)的還款進行預測翎冲。

參考連接:http://www.reibang.com/p/6eb58b0be7c8

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市媳荒,隨后出現(xiàn)的幾起案子抗悍,更是在濱河造成了極大的恐慌,老刑警劉巖钳枕,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缴渊,死亡現(xiàn)場離奇詭異,居然都是意外死亡鱼炒,警方通過查閱死者的電腦和手機衔沼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昔瞧,“玉大人指蚁,你說我怎么就攤上這事∽晕” “怎么了凝化?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長酬荞。 經(jīng)常有香客問我搓劫,道長,這世上最難降的妖魔是什么袜蚕? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任糟把,我火速辦了婚禮,結果婚禮上牲剃,老公的妹妹穿的比我還像新娘。我一直安慰自己雄可,他們只是感情好凿傅,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著数苫,像睡著了一般聪舒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虐急,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天箱残,我揣著相機與錄音,去河邊找鬼。 笑死被辑,一個胖子當著我的面吹牛燎悍,可吹牛的內容都是我干的。 我是一名探鬼主播盼理,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谈山,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了宏怔?” 一聲冷哼從身側響起奏路,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎臊诊,沒想到半個月后鸽粉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡抓艳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年潜叛,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壶硅。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡威兜,死狀恐怖,靈堂內的尸體忽然破棺而出庐椒,到底是詐尸還是另有隱情椒舵,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布约谈,位于F島的核電站笔宿,受9級特大地震影響,放射性物質發(fā)生泄漏棱诱。R本人自食惡果不足惜泼橘,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迈勋。 院中可真熱鬧炬灭,春花似錦、人聲如沸靡菇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厦凤。三九已至鼻吮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間较鼓,已是汗流浹背椎木。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人香椎。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓漱竖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親士鸥。 傳聞我的和親對象是個殘疾皇子闲孤,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355