1. 程式人生 > >註冊會計師帶你用Python進行探索性風險分析(一)

註冊會計師帶你用Python進行探索性風險分析(一)

專 欄

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

❈Rho,Python中文社群專欄作者,現居深圳。知乎專欄地址:https://zhuanlan.zhihu.com/BecomingaDataScientist❈

專案介紹

所謂探索性資料分析(Exploratory Data Analysis,以下簡稱EDA),是指對已有的資料(特別是調查或觀察得來的原始資料)在儘量少的先驗假定下進行探索,通過作圖、製表、方程擬合、計算特徵量等手段探索資料的結構和規律的一種資料分析方法。特別是當我們對這些資料中的資訊沒有足夠的經驗,不知道該用何種傳統統計方法進行分析時,探索性資料分析就會非常有效。探索性資料分析在上世紀六十年代被提出,其方法由美國著名統計學家約翰·圖基(John Tukey)命名。

本專案需解決的問題

本專案分析P2P平臺Lending Club的貸款資料,探索資料分析過程中,並嘗試回答以下3個問題:

1、利率與風險成正比,風險越高,利率越高,違約的可能線性越大,從P2P平臺的資料來看,影響風險的因素有哪些?(為後續建模做準備)
2、瞭解P2P平臺的業務特點、產品型別、資產質量、風險定價?
3、有什麼建議?

分析思路

我們可以將信貸資訊分為信貸硬資訊和信貸軟資訊。
任何可以量化客戶的還款能力的資訊均可以用作硬資訊,可勾勒客戶還款意願的資訊則為軟資訊。
信貸硬資訊: 站在企業的角度,硬資訊主要包括財務三大報表(資產負債表、利潤表和現金流量表)以及信貸記錄;站在個人角度硬資訊主要包括:個人年收入 、資產狀況(借款是否擁有房產、車或理財產品)。
信貸軟資訊: 過往的信貸記錄比較直接瞭解客戶的還款意願,以往發生違約次數較多的客戶再次發生違約的概率相比其他客戶大。客戶的學歷、年齡、目前工作所在單位的級別和性別等資訊也可作為軟資訊。
因此,我們主要圍繞著“客戶是否具有償還能力,是否具有償還意願”展開探索分析。

專案背景

作為舊金山的一家個人對個人的借貸公司,Lending Club成立於2006年。他們是第一家註冊為按照美國證券交易委員會SEC(Securities and Exchange Commission)的安全標準向個人提供個人貸款的借貸公司。與傳統借貸機構最大的不同是,Lending Club利用網路技術打造的這個交易平臺,直接連線了個人投資者和個人借貸者,通過此種方式,縮短了資金流通的環節,尤其是繞過了傳統的大銀行等金融機構,使得投資者和借貸者都能得到更多實惠、更快捷。對於投資者來說可以獲得更好的回報,而對於借貸者來說,則可以獲得相對較低的貸款利率。

Lending Club 介紹:https://www.huxiu.com/article/41472/1.html

資料集

資料集是Lending Club平臺發生借貸的業務資料(2017年第二季),具體資料集可以從Lending Club官網下載

本專案報告分析,我將如何運用Python操作資料和探索分析資料的思考過程均記錄下來。

前期準備

第一步,匯入我們要用的庫

0?wx_fmt=png

注意:不要漏了%matplotlib inline。IPython提供了很多魔法命令,使得在IPython環境中的操作更加得心應手,使用%matplotlib inline在繪圖時,將圖片內嵌在互動視窗,而不是彈出一個圖片視窗。具體請檢視Stackoverflow的解釋。

獲取資料

第二步,使用Pandas解析資料

Pandas是基於NumPy的一個非常好用的庫,無論是讀取資料、處理資料,用它都非常簡單。學習Pandas最好的方法就是檢視官方文件 。
資料集的格式是CSV,因此我們用到pandans.read_csv方法,同時也將CSV內容轉化成矩陣的格式。

0?wx_fmt=png

探索分析資料(EDA)

一旦獲得了資料,下一步就是檢查和探索他們。在這個階段,主要的目標是合理地檢查資料。例如:如果資料有唯一的標記符,是否真的只有一個;資料是什麼型別,檢查最極端的情況。他們是否有意義,有什麼需要刪除的嗎?資料應該怎麼調整才能適用於接下來的分析和挖掘?此外,資料集還有可能存在異常值。同時,我將會通過對資料進行簡單的統計測試,並將其視覺化。 檢查和探索資料的過程非常關鍵。因為下一步需要清洗和準備處理這些資料,只有進入模型的資料質量是好的,才能構建好的模型。(避免Garbage in, Garbage out)

首先預覽基本內容,Pandas為我們提供很多可以方便檢視和檢查數資料的方法,有df.head(n)、df.tail(n)、df.shape()、http://df.info()等 。

查看錶格的行數和列數

0?wx_fmt=png

0?wx_fmt=png

擴大行檢視範圍

0?wx_fmt=png

由上圖我們發現一些列有很多缺失值,這些缺失值對我們的資料分析沒有意義,因此,首先把含有許多缺失值的列刪除,同時將已清洗過的資料新建CSV儲存。

處理缺失值

統計每列屬性缺失值的數量。

0?wx_fmt=png

0?wx_fmt=png

再次用pandas解析預處理過的資料檔案並預覽基本資訊。

0?wx_fmt=png

資料從137列減少至102列。

0?wx_fmt=png

0?wx_fmt=png

Pandas的describe()不能統計資料型別為object的屬性,部分資料int_rate和emp_length資料型別都是object,稍後分析資料時需將它們轉化為型別為floate的數字型別。

資料集的屬性較多,我們初步聚焦幾個重要特徵展開分析,特別是我們最關心的屬性貸款狀態。

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

單變數分析

1.貸款狀態分佈

處理異常值

0?wx_fmt=png

由於loan_status異常值為n的數量和貸款金額較小,因此我們直接刪異常值所對應的行。

0?wx_fmt=png

為了更方便分析,我們將貸款狀態進行分類變數編碼,主要將貸款狀態分為正常和違約,貸款狀態分類依據主要參考 The 10 loan status variants explained

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

從圖中可以看出,平臺貸款發生違約的數量佔少數。貸款狀態為正常的有103,746個,貸款正常狀態佔比為98.38%。貸款狀態將作為我們建模的標籤,貸款狀態正常和貸款狀態違約兩者數量不平衡,絕大多數常見的機器學習演算法對於不平衡資料集都不能很好地工作,下一篇專案報告中,我們將會解決樣本不平衡的問題。

2.貸款金額分佈

0?wx_fmt=png

平臺貸款呈現右偏正態分佈,貸款金額最小值為1,000美元,最大值為40,000美元,貸款金額主要集中在10,000美元左右,中位數為12,000美元,可以看出平臺業務主要以小額貸款為主。貸款金額越大風險越大。

3.貸款期限分佈

0?wx_fmt=png

0?wx_fmt=png

平臺貸款產品期限分為36個月和60個月兩種,其中貸款期限為60個月的貸款佔比為26.88%,貸款期限為36個月的貸款佔比為73.12%。一般來說貸款期限越長,不確定性越大,違約的可能性更大,期限較長的貸款產品風險越高 。從期限角度看,平臺風險偏小的資產佔大部分。

4.貸款產品用途種類比較

0?wx_fmt=png

0?wx_fmt=png

P2P平臺貸款用途最多的為債務重組(借新債還舊債),其次是信用卡還款,第三是住房改善。一般來說,貸款用途為債務重組和信用卡還款的客戶現金流較為緊張,此類客戶也是在傳統銀行渠道無法貸款才轉來P2P平臺貸款,這部分客戶的償還貸款能力較弱,發生違約的可能性較高。還有部分貸款用途為Other的貸款,需要通過其他維度來分析其風險。

5.客戶信用等級佔比

0?wx_fmt=png

0?wx_fmt=png

Lending Club平臺對客戶的信用等級分7類,A~G,信用等級為A的客戶信用評分最高,信用等級為G的客戶最低,信用等級的客戶發生違約的可能性更低。目前,平臺客戶信用等級佔比較多的客戶為C類,其次是B類和A類,三者合計佔比為81.62%。此外信用等級為E、F、G類的客戶佔比為6.99%。可以看出Lending Club授信部門對申請人的資信情況把關較嚴。

6.貸款利率種類分佈

0?wx_fmt=png

0?wx_fmt=png

0?wx_fmt=png

Lending Club平臺貸款利率呈現右偏正態分佈,利率中位數12.62%,利率最高值為31.00%,利率最小值為5.32%。利率是資金的價格,利率越高,借款人借貸成本越高,借款人違約的可能性越高。

640?wx_fmt=jpeg

長按掃描關注Python中文社群,

獲取更多技術乾貨!

Python 中 文 社 區

Python中文開發者的精神家園

合作、投稿請聯絡微信:

pythonpost

— 人生苦短,我用Python —
1MEwnaxmMz7BPTYzBdj751DPyHWikNoeFS

0?wx_fmt=jpeg