競賽地址:http://www.pkbigdata.com/common/cmpt/%E7%94%A8%E6%88%B7%E8%B4%B7%E6%AC%BE%E9%A3%8E%E9%99%A9%E9%A2%84%E6%B5%8B_%E8%B5%9B%E4%BD%93%E4%B8%8E%E6%95%B0%E6%8D%AE.html
數據探索:
比賽一共提供五張表,分別是:
訓練數據:用戶基本屬性,銀行流水記錄,用戶瀏覽行為,信用卡賬單記錄,放款時間,是否逾期
測試數據:用戶基本屬性,銀行流水記錄,用戶瀏覽行為,信用卡賬單記錄,放款時間,用戶ID 最后預測這些用戶ID是否會逾期
一、用戶基本屬性
數據一共55596條,包括六個字段(ID,性別,職業,教育程度,婚姻狀況,戶口類型)可以試着探索各個屬性與是否逾期的關系
五個屬性的數量分布
fig,ax = plt.subplots(2,3)
fig.set_size_inches(20,12) p = sns.color_palette() ax[0][0].bar(訓練基本屬性表.iloc[:,1].value_counts().index,訓練基本屬性表.iloc[:,1].value_counts(),color = p[0]) ax[0][0].set_xlabel(訓練基本屬性表.iloc[:,1].value_counts().name) ax[0][1].bar(訓練基本屬性表.iloc[:,2].value_counts().index,訓練基本屬性表.iloc[:,2].value_counts(),color = p[1]) ax[0][1].set_xlabel(訓練基本屬性表.iloc[:,2].value_counts().name) ax[0][2].bar(訓練基本屬性表.iloc[:,3].value_counts().index,訓練基本屬性表.iloc[:,3].value_counts(),color = p[2]) ax[0][2].set_xlabel(訓練基本屬性表.iloc[:,3].value_counts().name) ax[1][0].bar(訓練基本屬性表.iloc[:,4].value_counts().index,訓練基本屬性表.iloc[:,4].value_counts(),color = p[3]) ax[0][0].set_xlabel(訓練基本屬性表.iloc[:,1].value_counts().name) ax[1][0].set_xlabel(訓練基本屬性表.iloc[:,4].value_counts().name) ax[1][1].bar(訓練基本屬性表.iloc[:,5].value_counts().index,訓練基本屬性表.iloc[:,5].value_counts(),color = p[4]) ax[1][1].set_xlabel(訓練基本屬性表.iloc[:,5].value_counts().name
性別中1的數量明顯更多,職業中2的職業也更多,受教育程度更多是3,4,婚姻狀況更多是1,3,戶口類型較為平均
合並屬性表和是否逾期表,查看屬性與最終是否逾期之間有無明顯關系
是否逾期表中的數據數量也是55596條,取值分別是0,1 其中0的標簽數量明顯多於1
看看用戶的屬性不同,逾期的比例是不是也不同,這里使用了逾期率
根據前面我們知道:性別中1的數量明顯更多,職業中2的職業也更多,受教育程度更多是3,4,婚姻狀況更多是1,3,戶口類型較為平均
在逾期情況中發現,性別未知的逾期比例最高,2職業最多但是逾期最少,估計是白領。婚姻狀況最多是1,3,逾期中最高的是0,5估計是離異等
以上就是全部的屬性這個表的分析,接下來看看別的表
二、銀行流水記錄
銀行流水記錄表,表中主要是用戶支出收入以及工資收入情況,匯總用戶的這段時間的總收入總支出合並到前面的統計屬性表中去,主要的明細還是支出,數據一共六百多萬條
#統計每個用戶的支出,收入,工資收入合並到屬性表中去 用戶支出 = 訓練銀行流水記錄表[訓練銀行流水記錄表['交易類型'] == 1].groupby('用戶ID',as_index=False)['交易金額'].agg({'支出次數':np.size,'支出總金額':np.sum}) 用戶收入 = 訓練銀行流水記錄表[訓練銀行流水記錄表['交易類型'] == 0].groupby('用戶ID',as_index=False)['交易金額'].agg({'收入次數':np.size,'收入總金額':np.sum}) 工資收入 = 訓練銀行流水記錄表[訓練銀行流水記錄表['工資收入標記'] == 1].groupby('用戶ID',as_index=False)['交易金額'].agg({'工資收入次數':np.size,'工資總金額':np.sum})
統計屬性銀行流水表 = pd.merge(統計屬性表,用戶支出,how='left') 統計屬性銀行流水表 = pd.merge(統計屬性銀行流水表,用戶收入,how='left') 統計屬性銀行流水表 = pd.merge(統計屬性銀行流水表,工資收入,how='left')
並不是每個用戶都有這些數據,所以記得連接時候要用left啊,然后缺失值我們用0填充
#看看支出,收入,工資收入與是否逾期的關系 fig,ax = plt.subplots(2,3) fig.set_size_inches(18,12) ax[0][0].scatter(統計屬性銀行流水表['樣本標簽'],統計屬性銀行流水表['支出次數'],color = p[0]) ax[0][0].set_xlabel('支出次數') ax[1][0].scatter(統計屬性銀行流水表['樣本標簽'],統計屬性銀行流水表['支出總金額'],color = p[1]) ax[1][0].set_xlabel('支出總金額') ax[0][1].scatter(統計屬性銀行流水表['樣本標簽'],統計屬性銀行流水表['收入次數'],color = p[2]) ax[0][1].set_xlabel('收入次數') ax[1][1].scatter(統計屬性銀行流水表['樣本標簽'],統計屬性銀行流水表['收入總金額'],color = p[3]) ax[1][1].set_xlabel('收入總金額') ax[0][2].scatter(統計屬性銀行流水表['樣本標簽'],統計屬性銀行流水表['工資收入次數'],color = p[4]) ax[0][2].set_xlabel('工資收入次數') ax[1][2].scatter(統計屬性銀行流水表['樣本標簽'],統計屬性銀行流水表['工資總金額'],color = p[5]) ax[1][2].set_xlabel('工資總金額')
在逾期1中發現收入次數和收入總金額明顯少於0的,而在支出中相比差別不大。在支出相差不多情況下,收入越少自然逾期概率越大
#還可以增加一個收入-支出的指數 統計屬性銀行流水表['凈收入'] = 統計屬性銀行流水表['收入總金額'] - 統計屬性銀行流水表['支出總金額'] fig,ax = plt.subplots() fig.set_size_inches(6,6) ax.scatter(統計屬性銀行流水表['樣本標簽'],統計屬性銀行流水表['凈收入'])
以上就是銀行流水記錄表,如果想要研究還可以看看各個性別,職業,教育水平的工資、收入、支出等信息對比,這里由於研究的主要是逾期情況,因此主要跟逾期情況做對比
三、信用卡賬單記錄表
一共兩百多萬條數據,十五個字段,