拍拍貸用戶及還款數(shù)據(jù)分析案例

來源:barefootgirl - kesci.com
原文鏈接:P2P信貸平臺業(yè)務數(shù)據(jù)分析
點擊以上鏈接?? 不用配置環(huán)境,直接在線運行
數(shù)據(jù)集下載鏈接:P2P信貸平臺業(yè)務數(shù)據(jù)

這個項目來自此前拍拍魔鏡數(shù)據(jù)訓練營麦锯,使用了拍拍貸真實業(yè)務數(shù)據(jù)乘客。本項目基于數(shù)據(jù)集研究了用戶畫像分析竹伸、資金儲備、逾期還款率、借款利率、用戶還款習慣砂代、催收回款率、用戶累積收益曲線的問題

1.借款人分析

首先我們來分析一下LC.csv數(shù)據(jù)集率挣,LC (Loan Characteristics) 表為標的特征表刻伊,每支標一條記錄。共有21個字段椒功,包括一個主鍵(listingid)捶箱、7個標的特征和13個成交當時的借款人信息,全部為成交當時可以獲得的信息动漾。信息的維度比較廣丁屎,大致可以分為基本信息,認證信息谦炬,信用信息悦屏,借款信息。

基本信息:年齡键思、性別础爬;

認證信息:手機認證、戶口認證吼鳞、視頻認證看蚜、征信認證、淘寶認證赔桌;

信用信息:初始評級供炎、歷史正常還款期數(shù)、歷史逾期還款期數(shù)疾党;

借款信息:歷史成功借款金額音诫、歷史成功借款次數(shù)、借款金額雪位、借款期限竭钝、借款成功日期

對于LC數(shù)據(jù)集我們提出以下四個問題:

1.用戶畫像,包含使用平臺貸款業(yè)務的用戶的性別比例,學歷水平香罐,是否為舊有用戶卧波,年齡分布等信息。

2.資金儲備庇茫,每日借款金額大概多少港粱?波動有多大?從而公司每日需準備多少資金可以保證不會出現(xiàn)資金短缺旦签?

3.用戶逾期率查坪,借款人的初始評級、借款類型顷霹、性別咪惠、年齡等特征對于逾期還款的概率有無顯著影響?哪些群體逾期還款率明顯較高淋淀?

4.借款利率遥昧,哪些群體更愿意接受較高的借款利率?

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

LC = pd.read_csv('/home/kesci/input/ppdai2017/LC.csv')
LP = pd.read_csv('/home/kesci/input/ppdai2017/LP.csv')

對數(shù)據(jù)進行清洗

依次檢查重復值朵纷、缺失值的處理炭臭,一致化以及異常值,數(shù)據(jù)集很干凈袍辞。

#LC.info()
#LC.describe()
#觀察一下年齡分布鞋仍,最小17歲,最大56歲搅吁,平均年齡29歲威创,33歲以下的占比超過了75%。說明用戶整體還是中青年谎懦。
#將年齡分為'15-20', '20-25', '25-30', '30-35', '35-40', '40+'比較合理
#觀察一下借款金額分布肚豺,最小借款金額為100元,最大為50萬元界拦,平均值為4424元吸申,低于5230的借款金額占到了75%。
#說明應該是小額借款比較多享甸。將借款金額分為0-2000截碴,2000-3000,3000-4000蛉威,4000-5000日丹,5000-6000,6000以上比較合理
#LC['ListingId'].value_counts()
# LP.info()
# LP.describe()
# LP = LP.dropna(how='any')
# LP.info()
# LC = LC.dropna(how='any')
# 數(shù)據(jù)很干凈

1.分析用戶畫像(性別蚯嫌、學歷聚凹、年齡割坠、是否首標)

按‘性別’、‘年齡’妒牙、‘是否首標’、‘學歷認證’字段對‘借款金額’進行加總对妄,用餅圖或柱狀圖將結(jié)果可視化

#性別分析
male = LC[LC['性別'] == '男']
female = LC[LC['性別'] == '女']
sex = (male,female)
sex_data = (male['借款金額'].sum(), female['借款金額'].sum())
sex_idx = ('男', '女')
plt.figure(figsize=(15, 6))
plt.subplot(1,3,1)
plt.pie(sex_data, labels=sex_idx, autopct='%.1f%%')

#新老客戶分析
new = LC[LC['是否首標'] == '是']
old = LC[LC['是否首標'] == '否']
newold_data = (new['借款金額'].sum(), old['借款金額'].sum())
newold_idx = ('新客戶', '老客戶')
plt.subplot(1,3,2)
plt.pie(newold_data, labels=newold_idx, autopct='%.1f%%')

#學歷分析
ungraduate = LC[LC['學歷認證'] == '未成功認證']
graduate = LC[LC['學歷認證'] == '成功認證']
education_data = (ungraduate['借款金額'].sum(), graduate['借款金額'].sum())
education_idx = ('大專以下', '大專及以上')
plt.subplot(1,3,3)
plt.pie(education_data, labels=education_idx, autopct='%.1f%%')
plt.show()

#年齡分析
ageA = LC.loc[(LC['年齡'] >= 15) & (LC['年齡'] < 20)]
ageB = LC.loc[(LC['年齡'] >= 20) & (LC['年齡'] < 25)]
ageC = LC.loc[(LC['年齡'] >= 25) & (LC['年齡'] < 30)]
ageD = LC.loc[(LC['年齡'] >= 30) & (LC['年齡'] < 35)]
ageE = LC.loc[(LC['年齡'] >= 35) & (LC['年齡'] < 40)]
ageF = LC.loc[LC['年齡'] >= 40]
age = (ageA, ageB, ageC, ageD, ageE, ageF)
age_total = 0
age_percent =[]
for i in age:
    tmp = i['借款金額'].sum()
    age_percent.append(tmp)
    age_total  += tmp
age_percent /= age_total
age_idx = ['15-20', '20-25', '25-30', '30-35', '35-40', '40+']
plt.figure(figsize=(15, 8))
plt.bar(age_idx, age_percent)
for (a, b) in zip(age_idx, age_percent):
    plt.text(a, b+0.001, '%.2f%%' % (b * 100), ha='center', va='bottom', fontsize=10)
plt.show()

結(jié)論:

1.男性客戶的貢獻的貸款金額占到了69%湘今,可能的原因是男性更傾向于提前消費且貸款金額較大。

2.非首標的金額占比達到66%剪菱,說明用戶傾向于多次使用摩瞎,產(chǎn)品粘性較高。

3.大專以下學歷的貸款金額更多孝常,但是由于可能有很多用戶并未認證學歷旗们,所以數(shù)據(jù)存在出入。

4.年齡段在25-30歲之間的借款金額最多构灸,而20-35歲的人群占比超過75%上渴,是該產(chǎn)品的主力消費人群。

2.分析資金儲備

每日的借款金額大概多少喜颁?波動有多大稠氮?公司每日需要準備多少資金可以保證不會出現(xiàn)資金短缺?

from datetime import datetime

#分析每日貸款金額的走勢
loan = LC[['借款成功日期', '借款金額']].copy()
loan['借款日期'] = pd.to_datetime(loan['借款成功日期'])
loan1 = loan.pivot_table(index='借款日期', aggfunc='sum').copy()
plt.figure(figsize=(15, 6))
plt.subplot(1,2,1)
plt.plot(loan1)
plt.xlabel('日期')
plt.ylabel('借款金額')
plt.title('每天貸款金額波動圖')

#分析每月貸款金額的走勢
loan['借款成功月份'] = [datetime.strftime(x, '%Y-%m') for x in loan['借款日期']]
loan2 = loan.pivot_table(index='借款成功月份', aggfunc='sum').copy()
plt.subplot(1,2,2)
plt.plot(loan2)
plt.xlabel('月份')
plt.xticks(['2015-01','2015-07','2016-01','2016-07','2017-01'])
plt.ylabel('借款金額')
plt.title('每月貸款金額波動圖')
plt.show()

# 對2017年1月的數(shù)據(jù)繼續(xù)進行分析半开,并求出平均值和標準差
loan3 = loan1.loc['2017-01']
avg = loan3['借款金額'].mean()
std = loan3['借款金額'].std()
print(avg, std)

image
5204663.8 2203394.1435809094

結(jié)論:

1.每日貸款金額呈現(xiàn)的是一個往上的趨勢,但是每天的波動較大隔披。

2.每月貸款分析結(jié)論:從2015年1月到2017年1月,月度貸款金額呈現(xiàn)上升趨勢寂拆,上升速度隨著時間增快奢米。

3.2017年1月每日的借款金額達到5204664元,標準差為2203394纠永,根據(jù)3σ原則鬓长,想使每日借款金額充足的概率達到99.9%,則每日公式賬上需準備5204664+2203394×3=11814846元渺蒿。

3.分析逾期還款率(借款人的初始評級痢士、借款類型、性別茂装、年齡怠蹂、借款金額等特征)

逾期還款率 = 歷史逾期還款期數(shù)/(歷史逾期還款期數(shù)+歷史正常還款期數(shù))

#初始評級的數(shù)據(jù)劃分
level_idx = ('A','B','C','D','E','F')
lev = []
for i in level_idx:
    temp = LC[LC['初始評級'] == i]
    lev.append(temp)
    
#借款類型的數(shù)據(jù)劃分
kind_idx = ('電商', 'APP閃電','普通', '其他')
kind = []
for i in kind_idx:
    temp = LC[LC['借款類型'] == i]
    kind.append(temp)
 
#不同借款金額的數(shù)據(jù)劃分  
amount_idx = ('0-2000', '2000-3000', '3000-4000', '4000-5000', '5000-6000', '6000+')
amountA = LC.loc[(LC['借款金額'] > 0) & (LC['借款金額'] < 2000)]
amountB = LC.loc[(LC['借款金額'] >= 2000) & (LC['借款金額'] < 3000)]
amountC = LC.loc[(LC['借款金額'] >= 3000) & (LC['借款金額'] < 4000)]
amountD = LC.loc[(LC['借款金額'] >= 4000) & (LC['借款金額'] < 5000)]
amountE = LC.loc[(LC['借款金額'] >= 5000) & (LC['借款金額'] < 6000)]
amountF = LC.loc[(LC['借款金額'] >= 6000)]
amount = (amountA, amountB, amountC, amountD,amountE,amountF)

LC['逾期還款率'] = LC['歷史逾期還款期數(shù)']/(LC['歷史逾期還款期數(shù)']+LC['歷史正常還款期數(shù)'])*100

#逾期還款率的分析圖
def depayplot(i,idx,data,xlabel,title,index):
    depay = []
    for a in data:
        tmp = a[index].mean()
        depay.append(tmp)
    plt.subplot(2,3,i)
    plt.bar(idx, depay)
    for (a, b) in zip(idx, depay):
        plt.text(a, b+0.001, '%.2f%%'% b, ha='center', va='bottom', fontsize=10)
    plt.xlabel(xlabel)
    plt.ylabel(index)
    plt.title(title)

plt.figure(figsize=(15, 10))
index = '逾期還款率'
# 根據(jù)初始評級對逾期還款率進行分析
depayplot(1,level_idx,lev,'初始評級','不同初始評級客戶逾期還款率',index)

# 根據(jù)年齡對逾期還款率進行分析
depayplot(2,age_idx,age,'年齡','不同年齡客戶逾期還款率',index)

# 根據(jù)借款類型對逾期還款率進行分析
depayplot(3,kind_idx,kind,'借款類型','不同借款類型客戶逾期還款率',index)

# 根據(jù)性別對逾期還款率進行分析
depayplot(4,sex_idx,sex,'性別','不同性別客戶逾期還款率',index)

# 根據(jù)借款金額對逾期還款率進行分析
depayplot(5,amount_idx,amount,'借款金額','不同借款金額客戶逾期還款率',index)

plt.show()

結(jié)論:

1.初始評級對于貸款者的還款能力有比較好的預測作用,EF兩級反轉(zhuǎn)可能是因為樣本數(shù)量較少少态,ABCD四個等級的平均逾期還款率都比較小城侧,而EF兩級明顯增大,故公司對于這兩類貸款者要謹慎對待彼妻。

2.年齡對于逾期率的分布較為平均嫌佑,25-30歲的年輕人可以重點關注豆茫。

3.APP閃電的逾期還款率明顯低于其他三種,故公司可以多考慮與“APP閃電”借款類型的合作屋摇。

4.女性的逾期率高于男性揩魂,可能是由于生活中男性收入較女性高造成的。

5.借款金額在2000以下的逾期還款率最低炮温,2000-3000之間的最高火脉。可以多考慮小額貸款降低逾期風險柒啤。

4.分析借款利率(借款人的初始評級倦挂、借款類型、性別担巩、年齡方援、借款金額等特征)

哪些客戶群體更愿意接受較高的借款利率?

#借款利率的分析圖
plt.figure(figsize=(15, 10))
index1 = '借款利率'

# 根據(jù)初始評級對借款利率進行分析
depayplot(1,level_idx,lev,'初始評級','不同初始評級客戶借款利率',index1)

# 根據(jù)年齡對借款利率進行分析
depayplot(2,age_idx,age,'年齡','不同年齡客戶借款利率',index1)

# 根據(jù)借款類型對借款利率進行分析
depayplot(3,kind_idx,kind,'借款類型','不同借款類型客戶借款利率',index1)

# 根據(jù)性別對借款利率進行分析
depayplot(4,sex_idx,sex,'性別','不同性別客戶借款利率',index1)

# 根據(jù)借款金額對借款利率進行分析
depayplot(5,amount_idx,amount,'借款金額','不同借款金額客戶借款利率',index1)

plt.show()

結(jié)論:

1.年齡對于借款利率的分布較為平均涛癌,差異性很小犯戏。

2.初始評級的平均借款利率由小到大排列為ABCDFDE。

3.電商的借款利率明顯低于其他三種祖很。

4.女性所能接受的借款利率低于男性笛丙。

5.借款金額對于借款利率的分布較為平均,差異性很小假颇。

對于以上四個問題綜合分析LC數(shù)據(jù)集:

1胚鸯、“男性”、“回頭客”笨鸡、“中青年”是拍拍貸用戶群體的主要特征姜钳。

2、每日公司賬上需準備7,283,728元形耗,方可保證出現(xiàn)當日出借金額不足的可能性小于0.1%哥桥。

3、“初始評級”為D的群體激涤,借款利率與E拟糕,F(xiàn)大致相當,但其逾期還款率卻只有E倦踢,F(xiàn)群體的三分之一送滞,相同的收益水平下風險大大降低,應多發(fā)展評級為D的客戶或提高其貸款額度辱挥。

4犁嗅、通過“app閃電”貸款的逾期還款率遠低于其他項,約為其他借款類型的三分之一至四分之一晤碘,而平均借款利率卻和其他項相差不大褂微,證明“app閃電”是該公司優(yōu)質(zhì)的合作方功蜓,其所引流來得客戶質(zhì)量很高,“拍拍貸”應與“app閃電”繼續(xù)加深合作宠蚂。

5式撼、“電商”中的貸款客戶,收益率水平明顯較低肥矢,逾期率卻不低端衰,在該群體中的貸款收益小,風險大甘改。

6、從性別上看灭抑,男性群體貸款利率較高十艾,逾期風險較小,相較女性一定程度上是更為優(yōu)質(zhì)的客戶腾节,但并不明顯忘嫉。

2.用戶還款情況分析

基于LCLP.csv 數(shù)據(jù),分析用戶的還款習慣(提前一次性全部還款 案腺、部分提前還款以及逾期還款)的金額占比庆冕。

將數(shù)據(jù)集按借款金額分組,并按還款狀態(tài)和還款日期分成四種還款情況并進行統(tǒng)計:

(1)一次性全部還款:其還款狀態(tài)標記為‘已提前還清該標全部欠款’劈榨;

(2)部分提前還款:其還款狀態(tài)標記為’已正常還款’访递,并且當期的還款日期早于到期日期;

(3)正常還款:其還款狀態(tài)標記為’已正常還款’同辣,并且當期的還款日期即為到期日期拷姿;

(4)逾期還款:還款狀態(tài)標記為‘未還款’,‘已逾期還款’或者‘已部分還款’旱函。

用百分堆積柱狀圖展示在不同年齡段(15 -20 响巢,20 -25 ,25 -30 棒妨, 30-35 踪古,35 -40 ,40+ ),不同性別( 男券腔、女)伏穆,不同初始評級(A-F),不同借款類型颅眶、不同借款金額(1-1000蜈出,1000 -2000,2000-3000涛酗,3000+)铡原、不同期數(shù)(1-24)的走勢偷厦。

# 刪除尚未到期的記錄
LP = LP[LP['到期日期'] <= LP['recorddate']]
#LP.info()
#LP.describe()
# 將LC和LP兩個表融合起來
LCLP = pd.merge(LC, LP, how='left', on=['ListingId'])
# 刪除數(shù)據(jù)不全的記錄
LCLP = LCLP.dropna(how='any')
# LCLP.info()
#LCLP.describe()

#定義用戶還款習慣分析可視化函數(shù)
def repayhabit(group,num,idx,xlabel,color):
    # 一次性全部還款
    onetime = []
    for a in group:
        ot = a.loc[a['還款狀態(tài)'] == 3]['應還本金'].sum(
            ) + a.loc[a['還款狀態(tài)'] == 3]['應還利息'].sum()
        onetime.append(ot)
    # 部分提前還款
    partial = []
    for a in group:
        pa = a.loc[(a['還款狀態(tài)'] == 1) & (a['還款日期'] < a['到期日期'])]['應還本金'].sum(
            ) + a.loc[(a['還款狀態(tài)'] == 1) & (a['還款日期'] < a['到期日期'])]['應還利息'].sum()
        partial.append(pa)
    # 逾期還款
    pastdue = []
    for a in group:
        pas = a.loc[(a['還款狀態(tài)'] == 2) | (a['還款狀態(tài)'] == 4)|(a['還款狀態(tài)'] == 0)]['應還本金'].sum() + \
            a.loc[(a['還款狀態(tài)'] == 2) | (a['還款狀態(tài)'] == 4)|(a['還款狀態(tài)'] == 0)]['應還利息'].sum()
        pastdue.append(pas)
    # 正常還款
    normal = []
    for a in group:
        nm = a.loc[(a['還款狀態(tài)'] == 1) & (a['還款日期'] == a['到期日期'])]['應還本金'].sum(
        ) + a.loc[(a['還款狀態(tài)'] == 1) & (a['還款日期'] == a['到期日期'])]['應還利息'].sum()
        normal.append(nm)
    
    tot = []
    for i in range(num):
        t = onetime[i]+partial[i]+pastdue[i]+normal[i]
        tot.append(t)

    print(tot)

    temp = []
    for i in range(num):
        tp = (100 * onetime[i] / tot[i], 100 * partial[i] / tot[i],
                100 * normal[i] / tot[i], 100 * pastdue[i] / tot[i])
        temp.append(tp)
        
    df = pd.DataFrame(temp)
    df.index = idx
    df.columns = ('提前一次性', '部分提前', '正常', '逾期')
    print(df)

    df.plot(kind='bar', colormap=color, stacked=True)
    plt.ylabel('還款金額')
    plt.xlabel(xlabel)
    plt.legend(loc='best')
    plt.show()
    
# 分析不同借款金額用戶的還款情況
amountA = LCLP.loc[(LCLP['借款金額'] > 0) & (LCLP['借款金額'] < 2000)]
amountB = LCLP.loc[(LCLP['借款金額'] >= 2000) & (LCLP['借款金額'] < 3000)]
amountC = LCLP.loc[(LCLP['借款金額'] >= 3000) & (LCLP['借款金額'] < 4000)]
amountD = LCLP.loc[(LCLP['借款金額'] >= 4000) & (LCLP['借款金額'] < 5000)]
amountE = LCLP.loc[(LCLP['借款金額'] >= 5000) & (LCLP['借款金額'] < 6000)]
amountF = LCLP.loc[(LCLP['借款金額'] >= 6000)]
amountgroup = [amountA, amountB, amountC, amountD,amountE,amountF]

repayhabit(amountgroup,6,amount_idx,'借款金額','Greys_r')
[28456834.85, 69903191.44000001, 99595369.9, 72161874.03, 51083566.29000001, 269236628.2506]
               提前一次性       部分提前         正常         逾期
0-2000     10.204426  60.954742  16.233811  12.607020
2000-3000  10.208217  54.959603  20.400835  14.431346
3000-4000  14.874141  50.961604  21.902815  12.261440
4000-5000  14.678874  50.698304  22.775784  11.847038
5000-6000  15.703463  50.299053  23.239861  10.757622
6000+      11.688029  39.376116  39.790049   9.145806

在根據(jù)借款金額分組中,得到結(jié)果如下:

A組(0-2000):總金額2.85千萬燕刻。(1)一次性全部還款:占比 10.20%只泼;(2)部分提前還款:占比60.95%;(3)正常還款:占比 16.23%卵洗; (4)逾期還款:占比 12.61%请唱。

B組(2000-3000):總金額 7千萬。(1)一次性全部還款:占比 10.21%过蹂;(2)部分提前還款:占比54.96%十绑;(3)正常還款:占比 20.40%; (4)逾期還款:占比 14.43%酷勺。

C組(3000-4000):總金額 10千萬本橙。(1)一次性全部還款:占比 14.87%;(2)部分提前還款:占比50.96%脆诉;(3)正常還款:占比 21.90%甚亭; (4)逾期還款:占比 12.26%。

D組(4000-5000):總金額 7.22千萬击胜。(1)一次性全部還:占比 14.68%亏狰;(2)部分提前還款:占比50.70%;(3)正常還款:占比 22.78%偶摔; (4)逾期還款:占比 11.85%暇唾。

E組(5000-6000):總金額 5.11千萬。(1)一次性全部還款:占比 15.70%啰挪;(2)部分提前還款:占比50.30%信不;(3)正常還款:占比 23.24%; (4)逾期還款:占比 10.76%亡呵。

F組(6000+):總金額 26.92千萬抽活。(1)一次性全部還款:占比 11.69%;(2)部分提前還款:占比39.38%锰什;(3)正常還款:占比 39.79%下硕; (4)逾期還款:占比 9.15%。

從對借款金額分組的統(tǒng)計結(jié)果以及上圖結(jié)果中可以看出:

(1)借款總額6000元以上最多汁胆,3000-4000其次梭姓,說明3000-4000元的借款金額是最多的。

(2)逾期風險在各金額組表現(xiàn)比較平均嫩码,其中2000-3000最大誉尖,6000+最小。

(3)隨著標的金額增加铸题,部分提前還款的總金額比例在減少铡恕,正常還款的總金額比例在增加琢感。

# 分析不同年齡段用戶的還款情況
ageA = LCLP.loc[(LCLP['年齡'] >= 15) & (LCLP['年齡'] < 20)]
ageB = LCLP.loc[(LCLP['年齡'] >= 20) & (LCLP['年齡'] < 25)]
ageC = LCLP.loc[(LCLP['年齡'] >= 25) & (LCLP['年齡'] < 30)]
ageD = LCLP.loc[(LCLP['年齡'] >= 30) & (LCLP['年齡'] < 35)]
ageE = LCLP.loc[(LCLP['年齡'] >= 35) & (LCLP['年齡'] < 40)]
ageF = LCLP.loc[LCLP['年齡'] >= 40]
agegroup = [ageA, ageB, ageC, ageD, ageE, ageF]

repayhabit(agegroup,6,age_idx,'年齡','Reds_r')
[1325708.5400000003, 85978811.91999999, 203407279.9106, 149443150.8962, 79947743.0043, 70334770.4895]
           提前一次性       部分提前         正常         逾期
15-20  10.441107  62.896452  13.114767  13.547674
20-25  13.428313  53.199581  20.048697  13.323409
25-30  14.002901  47.665900  26.687108  11.644091
30-35  12.363756  43.932650  33.824134   9.879460
35-40  10.805522  44.388718  34.672769  10.132990
40+    10.882495  42.854777  37.205296   9.057432

在年齡分組中,得到結(jié)果如下:

A組(15-20歲):總金額0.13千萬探熔。(1)一次性全部還款:占比 10.44%驹针;(2)部分提前還款:占比62.90%;(3)正常還款:占比 13.11%诀艰; (4)逾期還款:占比 13.55%柬甥。

B組(20-25歲):總金額 8.60千萬。(1)一次性全部還款:占比 13.43%其垄;(2)部分提前還款:占比53.2%苛蒲;(3)正常還款:占比 20.05%; (4)逾期還款:占比 13.32%绿满。

C組(25-30歲):總金額 20.34千萬撤防。(1)一次性全部還款:占比 14.00%;(2)部分提前還款:占比47.67%棒口;(3)正常還款:占比 26.69%; (4)逾期還款:占比 11.64%辜膝。

D組(30-35歲):總金額 14.94千萬无牵。(1)一次性全部還款:占比 12.36%;(2)部分提前還款:占比43.92%厂抖;(3)正常還款:占比 33.82%茎毁; (4)逾期還款:占比 9.88%。

E組(35-40歲):總金額 8.00千萬忱辅。(1)一次性全部還款:占比 10.81%七蜘;(2)部分提前還款:占比44.39%;(3)正常還款:占比 34.67%墙懂; (4)逾期還款:占比 10.13%橡卤。

F組(40歲+):總金額 7.03千萬。(1)一次性全部還款:占比 10.88%损搬;(2)部分提前還款:占比42.85%碧库;(3)正常還款:占比 37.21%; (4)逾期還款:占比 9.06%巧勤。

從對年齡分組的統(tǒng)計結(jié)果以及上圖結(jié)果中可以看出:

(1)拍拍貸的客戶群體中25-30歲年齡組的貸款金額最高嵌灰,15-20歲最低;

(2)各年齡組的還款習慣大體一致颅悉,從金額上來說沽瞭,部分提前還款和正常還款是最常用的方式;

(3)逾期還款風險最高的年齡組為15-20歲組剩瓶;

(4)25-30歲年齡組一次性提前還款的金額占比最高驹溃。

# 分析不同性別用戶的還款情況
male = LCLP.loc[LCLP['性別'] == "男"]
female = LCLP.loc[LCLP['性別'] == "女"]
sexgroup = (male,female)

repayhabit(sexgroup,2,sex_idx,'性別','Greens_r')
[431899402.1953, 158538062.5653]
       提前一次性       部分提前         正常         逾期
男  13.159444  45.775236  30.093425  10.971895
女  11.417458  48.638828  29.114713  10.829001

在男女性別組中城丧,得到結(jié)果如下:

男性:總還款金額 43.19千萬。(1)一次性全部還款占比 13.16%吠架;(2)部分提前還款占比45.78%芙贫;(3)正常還款占比 30.09%; (4)逾期還款占比10.97%傍药。

女性:總還款金額 15.85千萬磺平。(1)一次性全部還款占比 11.42%;(2)部分提前還款占比48.64%拐辽;(3)正常還款占比29.11%拣挪; (4)逾期還款占比10.83%。

從對男女性別組的統(tǒng)計結(jié)果以及上圖結(jié)果中可以看出:

(1)拍拍貸男性客戶的貸款金額約為女性客戶的2.7倍俱诸;

(2)男性及女性的還款習慣大體上比較一致菠劝,從金額上來說,部分提前還款>正常還款>一次性提前還款>逾期還款睁搭;

(3)男性客戶一次性提前還款的金額占比較女性為高赶诊;

(4)女性逾期還款的風險略低于男性;

(5)女性部分提前還款的金額占比略大于男性园骆。

# 分析不同初始評級客戶的還款情況
levelgroup = []
for i in level_idx:
    l = LCLP[(LCLP['初始評級'] == i)]
    levelgroup.append(l)
    
repayhabit(levelgroup,6,level_idx,'初始評級','Blues_r')
[24260113.047399998, 129789781.91, 292672443.2151, 131419854.39039999, 10771732.247699998, 1523539.95]
       提前一次性       部分提前         正常         逾期
A  10.951641  42.540019  39.727788   6.780552
B   7.686131  37.447042  47.651688   7.215139
C  14.192953  49.919494  24.995052  10.892502
D  14.592841  49.269359  21.846049  14.291750
E  13.213394  40.965391  22.906776  22.914440
F  10.752586  41.241621  20.679682  27.326111

在初始評級分組中舔痪,得到結(jié)果如下:

A級:總金額2.43千萬。(1)一次性全部還款:占比 10.95%锌唾;(2)部分提前還款:占比42.54%锄码;(3)正常還款:占比 39.73%; (4)逾期還款:占比 6.78%晌涕。

B級:總金額 12.98千萬滋捶。(1)一次性全部還款:占比 7.68%;(2)部分提前還款:占比37.45%余黎;(3)正常還款:占比 47.65%重窟; (4)逾期還款:占比 7.22%。

C級:總金額 29.27千萬驯耻。(1)一次性全部還款:占比 14.19%亲族;(2)部分提前還款:占比49.92%;(3)正常還款:占比 25.00%可缚; (4)逾期還款:占比 10.89%霎迫。

D級:總金額 13.14千萬。(1)一次性全部還款:占比 14.59%帘靡;(2)部分提前還款:占比49.27%知给;(3)正常還款:占比 21.85%; (4)逾期還款:占比 14.29%。

E級:總金額 1.08千萬涩赢。(1)一次性全部還款:占比 13.21%戈次;(2)部分提前還款:占比40.97%;(3)正常還款:占比 22.91%筒扒; (4)逾期還款:占比 22.91%怯邪。

F級:總金額 0.15千萬。(1)一次性全部還款:占比 10.75%花墩;(2)部分提前還款:占比41.24%悬秉;(3)正常還款:占比 20.68%; (4)逾期還款:占比 27.33%冰蘑。

從對初始評級分組的統(tǒng)計結(jié)果可以看出:

(1)B級客戶借款總額最多和泌,占到了大約50%的金額。B祠肥、C武氓、D級客戶是借款的主力軍。

(2)提前一次性還款的占比相對比較平均仇箱,其中D級最大為14.59%县恕。

(3)逾期風險隨著級別而呈總體增加趨勢,F(xiàn)級客戶的逾期占比達到了27.33%剂桥。

(4)部分提前和正常還款還是占到了大多數(shù)弱睦。

(5)總的來說,初始評級具有重要的參考意義渊额。

# 分析不同借款類型客戶的還款情況
kindgroup = []
for i in kind_idx:
    l = LCLP[(LCLP['借款類型'] == i)]
    kindgroup.append(l)
    
repayhabit(kindgroup,4,kind_idx,'借款類型','Reds_r')
[85700890.47, 74452365.96, 234675993.36, 195608214.9706]
           提前一次性       部分提前         正常         逾期
電商      4.218635  26.927505  62.071671   6.782188
APP閃電   8.959958  61.125398  18.677700  11.236944
普通     17.162002  45.092948  26.095824  11.649226
其他     12.461221  51.329790  24.430785  11.778204

在借款類型分組中,得到結(jié)果如下:

電商:總金額8.57千萬垒拢。(1)一次性全部還款:占比 4.22%旬迹;(2)部分提前還款:占比26.93%;(3)正常還款:占比 62.07%求类; (4)逾期還款:占比 6.78%奔垦。

APP閃電:總金額 7.45千萬。(1)一次性全部還款:占比 8.96%尸疆;(2)部分提前還款:占比61.13%椿猎;(3)正常還款:占比 18.68%; (4)逾期還款:占比11.24%寿弱。

普通:總金額 23.47千萬犯眠。(1)一次性全部還款:占比 17.16%;(2)部分提前還款:占比45.09%症革;(3)正常還款:占比 26.10%筐咧; (4)逾期還款:占比 11.65%。

其他:總金額 19.56千萬。(1)一次性全部還款:占比 12.46%量蕊;(2)部分提前還款:占比51.33%铺罢;(3)正常還款:占比 24.43%; (4)逾期還款:占比 11.78%残炮。

從對借款類型分組的統(tǒng)計結(jié)果可以看出:

(1)普通借款類型的借款金額總數(shù)最大略板,其次是其他分冈,電商和APP閃電差不多。

(2)逾期風險電商最低,為6.78%祭示。其他三種類型差不多。

(3)部分提前和正常還款還是占到了大多數(shù)凹髓。值得注意的是除了電商村斟,其他三種類型的部分提前還款都占比很大。

term_idx = ('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24')
termgroup = []
for i in range(1,25):
    term = LCLP.loc[(LCLP['期數(shù)'] == i)]
    termgroup.append(term)

repayhabit(termgroup,24,term_idx,'期數(shù)','Reds_r')
[201565330.19059998, 160494654.9011, 142197065.14570004, 119076424.03460002, 98747185.4339, 80930357.9448, 40878559.982200004, 33897402.88249999, 27118560.888, 21440574.8308, 16173580.82, 11798205.459999999, 829538.13, 712179.6699999999, 634899.49, 544136.9299999999, 450818.11, 376328.06, 170209.27, 127468.83, 64092.6, 16738.09, 6095.860000000001, 1636.3400000000001]
        提前一次性       部分提前         正常         逾期
1   11.323967  46.902638  33.431895   8.341499
2   10.627492  50.312785  28.719538  10.340185
3   13.429248  46.155704  28.693458  11.721591
4   12.671416  44.157855  29.482901  13.687827
5   10.720721  44.604374  29.438926  15.235980
6    8.034741  44.478341  29.986734  17.500184
7   13.244753  43.730144  22.927067  20.098036
8   12.189846  42.894606  23.201825  21.713723
9    9.581578  43.431477  23.247505  23.739439
10   7.876236  43.417232  23.379967  25.326566
11   5.279194  43.232885  23.974747  27.513173
12   2.922282  46.334268  21.896949  28.846501
13  16.774186  21.147695  27.364840  34.713280
14   9.758560  23.252014  24.693067  42.296359
15   8.801518  24.895919  22.573134  43.729430
16   6.470489  23.249683  24.300979  45.978849
17   2.506725  23.486991  23.340262  50.666021
18   4.905321  25.221409  19.448053  50.425217
19   3.610555  24.795682  16.487475  55.106288
20  13.697341  18.319506  10.687672  57.295482
21  11.058032  22.625342  11.033629  55.282997
22   0.000000  63.308418  23.442997  13.248585
23   0.000000  26.843464  60.871805  12.284731
24   0.000000  50.000000  50.000000   0.000000

從對期數(shù)分組的統(tǒng)計結(jié)果可以看出:

(1)借款金額是隨著期數(shù)增加呈現(xiàn)出下降的趨勢抱完。

(2)不同的還款行為在不同的借款期限下的表現(xiàn)差異比較大贼陶,部分提前還款和正常還款是最常用的方式;

(3)逾期風險隨著借款期限變長而呈總體增加趨勢巧娱,期限為20個月的逾期金額占比為最高碉怔,達到了57.30%;

(4)期限為13個月的提前一次性還款占比最高禁添,達到了16.77%撮胧。

(5)借款期限太長的樣本數(shù)量太少,不能排除偶然性老翘。

3.計算金額催收回款率(催收回本金/所有逾期本金)

在不同等級(A-F)芹啥、不同借款期數(shù)(1-24)和不同借款金額(0-2000,2000-3000铺峭,3000-4000墓怀,4000-5000,5000-6000卫键,6000+)等傀履,隨逾期天數(shù)增加而呈現(xiàn)的走勢。

1)x軸為逾期天數(shù)莉炉,y軸為金額催收回款率钓账,不同參數(shù)對應不同曲線;

2)催收回款的定義為逾期90天之內(nèi)的逾期還款絮宁。

from datetime import datetime,timedelta

#LCLP.info()
LCLP['recorddate'] = pd.to_datetime(LCLP['recorddate'])
LCLP['到期日期'] = pd.to_datetime(LCLP['到期日期'])
LCLP['還款日期'] = pd.to_datetime(LCLP['還款日期'], errors='coerce')
LCLP['lateday'] = LCLP['還款日期']-LCLP['到期日期']

depay = LCLP[LCLP['lateday']>timedelta(days=0)]

#不同等級(A-F)隨逾期天數(shù)催收還款率的走勢
df = depay.groupby(['初始評級','lateday'])['應還本金'].sum()
df1 = df.to_frame().pivot_table(index='lateday',columns = '初始評級', values ='應還本金')
tmp = df1.fillna(0)
df2 = depay.groupby(['初始評級'])['應還本金'].sum()
tmp_1 = tmp[tmp.index <= timedelta(days=90)]
tmp_1 = tmp_1/df2

plt.figure(figsize=(15, 8))
for i in range(6):
    plt.subplot(2,3,i+1)
    plt.plot(range(90),tmp_1[level_idx[i]])
    plt.title(level_idx[i])
plt.show()

不同等級(A-F)隨逾期天數(shù)催收還款率的走勢大致相同梆暮,也就是大部分人都在逾期十天之內(nèi)還款,說明他們有可能忘記還款绍昂;特別是在4惕蹄、5天的還款的人數(shù)和金額最多。

#不同借款期數(shù)(1-24)隨逾期天數(shù)催收還款率的走勢
#由于期數(shù)為24的項目不存在逾期還款的現(xiàn)象,所以只對1-23進行分析

df = depay.groupby(['期數(shù)','lateday'])['應還本金'].sum()
df1 = df.to_frame().pivot_table(index='lateday',columns = '期數(shù)', values ='應還本金')
tmp = df1.fillna(0)
df2 = depay.groupby(['期數(shù)'])['應還本金'].sum()
tmp_1 = tmp[tmp.index <= timedelta(days=90)]
tmp_1 = tmp_1/df2

plt.figure(figsize=(15, 12))
for i in range(1,24):
    plt.subplot(4,6,i)
    plt.plot(range(90),tmp_1[i])
    plt.xticks([0,30,60,90])
    plt.title(str(i))
plt.show()

不同借款期數(shù)(1-24)的金額收回款率隨逾期天數(shù)的趨勢沒有明顯的規(guī)律卖陵。在12期及之前大部分人都在逾期十天之內(nèi)還款遭顶,特別是在4、5天的還款的人數(shù)和金額最多泪蔫。 但是13之后呈現(xiàn)出10天之后回款率的依然很大棒旗。也有可能是因為數(shù)據(jù)量導致異常值凸顯,但是也說明了借款期數(shù)長的回款率不夠穩(wěn)定撩荣。

#不同借款金額隨逾期天數(shù)催收還款率的走勢
def function(a):
    if a>0 and a<2000:
        return '0-2000'
    elif a>=2000 and a<3000:
        return '2000-3000'
    elif a>=3000 and a<4000:
        return '3000-4000'
    elif a>=4000 and a<5000:
        return '4000-5000'
    elif a>=5000 and a<6000:
        return '5000-6000'
    else:
        return '6000+'

depay['金額類型'] = depay.apply(lambda x:function(x['借款金額']),axis=1)

df = depay.groupby(['金額類型','lateday'])['應還本金'].sum().copy()
df1 = df.to_frame().pivot_table(index='lateday',columns = '金額類型', values ='應還本金')
tmp = df1.fillna(0)
df2 = depay.groupby(['金額類型'])['應還本金'].sum()
tmp_1 = tmp[tmp.index <= timedelta(days=90)]
tmp_1 = tmp_1/df2

plt.figure(figsize=(15, 8))
for i in range(6):
    plt.subplot(2,3,i+1)
    plt.plot(range(90),tmp_1[amount_idx[i]])
    plt.xticks([0,30,60,90])
    plt.title(amount_idx[i])
plt.show()

對不同借款金額對于進入催收回款率影響較大铣揉,借款金額越多,逾期的可能性就越大餐曹。

4.累積收益曲線

LCIS數(shù)據(jù)提供了該客戶投資的從2015年1月1日起成交的所有標逛拱。包括投標記錄和還款狀況。請計算并畫出該投資人從2016年9月開始到2017年2月台猴,每月月底的累計收益曲線朽合。

from datetime import datetime,timedelta
LCIS = pd.read_csv("/home/kesci/input/ppdai2017/LCIS.csv",encoding = 'utf-8')

# 計算從2016年9月至2017年2月所有的利息
def getinterest(df):
    df_1 = df[['ListingId','標當前狀態(tài)','上次還款日期','上次還款利息']]
    df_1 = df_1[(df_1['標當前狀態(tài)'] =='正常還款中') | (df_1['標當前狀態(tài)'] =='已還清')]
    df_1['上次還款日期'] = df_1['上次還款日期'].where(df_1['上次還款日期'].notnull(),'2016/08/31')
    df_1['上次還款日期'] = pd.to_datetime(df_1['上次還款日期'], errors='coerce')
    df_1 = df_1[df_1['上次還款日期']>='2016-09-01'].drop_duplicates()
    df_1_1 = df_1.groupby(['上次還款日期'])['上次還款利息'].sum().to_frame().reset_index()
    return df_1_1

# 計算從2016年9月至2017年2月所有的虧損
def getloss(df):    
    df_2 = df[['ListingId', '待還本金', '標當前狀態(tài)', '上次還款日期', '下次計劃還款日期', 'recorddate']]
    df_2 = df_2[(df_2['標當前狀態(tài)']=='逾期中')]
    df_2['下次計劃還款日期'] = pd.to_datetime(df_2['下次計劃還款日期'], errors='coerce')
    df_2['recorddate'] = pd.to_datetime(df_2['recorddate'], errors='coerce')
    
    # 往回看90天到2016-06-03
    df_2 = df_2[df_2['下次計劃還款日期']>='2016-06-03']
    df_2['delay'] = df_2.apply(lambda x: (x['recorddate'] - x['下次計劃還款日期']).days, axis = 1)
    df_2_1 = df_2[df_2['delay']>=90].sort_values(['ListingId','delay'])
    df_2_1['date'] = df_2['下次計劃還款日期'] + timedelta(days=90)
    df_2_2 = df_2_1.loc[df_2_1.sort_values('recorddate').iloc[:,0].drop_duplicates().index]
    df_2_2 = df_2_2[['date','待還本金']].groupby(['date'])['待還本金'].sum().to_frame().reset_index()
    return df_2_2

# merge gain and loss
def profit(df):
    df_1_1 = getinterest(df)
    df_2_2 = getloss(df)
    df_now = pd.merge(df_1_1,df_2_2, how = 'left', left_on = '上次還款日期', right_on = 'date')    
    df_now['待還本金'] = df_now['待還本金'].where(df_now['待還本金'].notnull(),0)
    df_now['差別'] = df_now['上次還款利息'] - df_now['待還本金']
    return df_now

def draw(df):
    df_now = profit(df)
    plt.plot(df_now['上次還款日期'], np.cumsum(df_now['差別']), label="利息")
    plt.title('累積收益曲線')
    plt.xlabel('時間')
    plt.ylabel('收益金額')
    plt.show()

draw(LCIS)

調(diào)用draw()函數(shù),可以對任一用戶的數(shù)據(jù)畫出累積收益曲線饱狂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曹步,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子休讳,更是在濱河造成了極大的恐慌讲婚,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件俊柔,死亡現(xiàn)場離奇詭異筹麸,居然都是意外死亡,警方通過查閱死者的電腦和手機雏婶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門竹捉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尚骄,你說我怎么就攤上這事∏中” “怎么了倔丈?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長状蜗。 經(jīng)常有香客問我需五,道長,這世上最難降的妖魔是什么轧坎? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任宏邮,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜜氨。我一直安慰自己械筛,他們只是感情好,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布飒炎。 她就那樣靜靜地躺著埋哟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪郎汪。 梳的紋絲不亂的頭發(fā)上赤赊,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音煞赢,去河邊找鬼抛计。 笑死,一個胖子當著我的面吹牛照筑,可吹牛的內(nèi)容都是我干的吹截。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼朦肘,長吁一口氣:“原來是場噩夢啊……” “哼饭弓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起媒抠,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤弟断,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后趴生,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阀趴,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年苍匆,在試婚紗的時候發(fā)現(xiàn)自己被綠了刘急。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡浸踩,死狀恐怖叔汁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情检碗,我是刑警寧澤据块,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站折剃,受9級特大地震影響另假,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜怕犁,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一边篮、第九天 我趴在偏房一處隱蔽的房頂上張望己莺。 院中可真熱鬧,春花似錦戈轿、人聲如沸凌受。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽胁艰。三九已至,卻和暖如春智蝠,著一層夾襖步出監(jiān)牢的瞬間腾么,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工杈湾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留解虱,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓漆撞,卻偏偏與公主長得像殴泰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子浮驳,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 教育培訓機構(gòu)是怎么運營的悍汛? 我們先說說一個正常的培訓機構(gòu)需要建立起來的邏輯是什么...
    打醬油的舞蹈老師閱讀 280評論 0 1
  • ?好多咨詢的朋友奉件,都問我宵蛀,我應不應該退保;都覺得現(xiàn)在退保損失很大县貌,不退保术陶,又覺得沒有足夠的保障,所以很是糾結(jié)煤痕; 問...
    金道保險咨詢閱讀 272評論 0 2
  • 周五下午我們上了社團課梧宫,社團課我們做了棒棒糖,我用了十五張彩紙折出了一個棒棒糖摆碉,我玩的很開心塘匣,我喜歡社團課。
    Snow_1815閱讀 170評論 0 0
  • 無論年輕與否兆解,都要保持一顆童心,帶著好奇的眼光去看待世界跑揉,發(fā)現(xiàn)美好锅睛,找到快樂的真諦埠巨,快樂很簡單!
    shadowcat1021閱讀 282評論 2 0
  • 1班-147-魚耳朵,刻意練習Day7 【分析】: 1印蔬、結(jié)尾緊扣題目勋桶。普通的“燈”居然延續(xù)了一個人的生命。 “我沒...
    魚耳朵魚閱讀 208評論 3 1