信用卡逾期项目初探(数据清洗与特征选择)
信用卡逾期项目初探(数据清洗与特征选择)
之前对机器学习还是很憧憬的,但感觉理论部分着实感觉吃力,现在开始慢慢啃这块骨头。
首先,我从网上获取到了相关数据,先进行数据说明吧。
背景描述
该数据集为台湾客户的拖欠付款情况。数据说明
数据有30000行(观察值)和24列(1个label,23个特征)X1:给定信用额度(新台币):既包括个人消费者信用额度,又包括其家庭(补充)信用额度。
X2:性别(1 =男性; 2 =女性)。
X3:教育(1 =研究生院; 2 =大学; 3 =高中; 4 =其他)。
X4:婚姻状况(1 =已婚; 2 =单身; 3 =其他)。
X5:年龄(年)。
X6-X11:过去的付款历史。我们跟踪了过去的每月付款记录(从2005年4月到2005年9月):
X6 = 2005年9月的还款状态;
X7 = 2005年8月的还款状态;....;X11 = 2005年4月的还款状态。还款状态的度量标准为:-1 =定期付款; 1 =付款延迟一个月; 2 =付款延迟两个月;...; 8 =付款延迟八个月; 9 =付款延迟9个月以上。PAY_0到PAY_6中出现的-2,-1,0都应该被视为按时还款。X12-X17:账单金额(新台币)。 X12 = 2005年9月的帐单金额; X13 = 2005年8月的帐单金额;..; X17 = 2005年4月的帐单金额。X18-X23:以前的付款金额(新台币)。 X18 = 2005年9月支付的金额; X19 = 2005年8月支付的金额;..; X23 = 2005年4月支付的金额。default payment next month:违约1,守约0
一开始拿到这么多的数据,可能大家会有点懵,不知道如何下手,我自己总结了几点:
第一,拿到数据先进行异常值和空值分析
第二,将异常值和空值解决后,进行标签和特征的可视化分析,探索其关系
第三,选取相关特征,并进行接下来的预测分析。
我们慢慢来,而且要大胆尝试自己写代码,多运行,多找错,这样就可以慢慢探索出规律。
一、数据清洗
1、空值分析
import pandas as pd
df = pd.read_csv('C:/Users/Administrator/Desktop/python/信用卡逾期项目/credit_card_default.csv',encoding='utf-8')
print(df.info()) # 这是所有变量的相关信息(打印结果只截了前面几条)
# Column Non-Null Count Dtype
--- ------ -------------- -----0 LIMIT_BAL 30000 non-null int641 SEX 30000 non-null int642 EDUCATION 30000 non-null int643 MARRIAGE 30000 non-null int644 AGE 30000 non-null int645 PAY_0 30000 non-null int646 PAY_2 30000 non-null int64
print(df.describe()) # 这是数值变量的相关信息
LIMIT_BAL SEX ... PAY_AMT6 default payment next month
count 30000.000000 30000.000000 ... 30000.000000 30000.000000
mean 167484.322667 1.603733 ... 5215.502567 0.221200
std 129747.661567 0.489129 ... 17777.465775 0.415062
min 10000.000000 1.000000 ... 0.000000 0.000000
25% 50000.000000 1.000000 ... 117.750000 0.000000
50% 140000.000000 2.000000 ... 1500.000000 0.000000
75% 240000.000000 2.000000 ... 4000.000000 0.000000
max 1000000.000000 2.000000 ... 528666.000000 1.000000
根据上面两个输出结果,我们发现好像并没有缺失值,我们还可以通过另一种方式去验证一下:
df.isnull().sum() # 结果发现确实没有缺失值,这是非常好的,不需要我们进行相应的填充
2、异常值分析
首先,有24列数据,我们先暂时不看标签列,剩下的分为个人信息变量和信用卡相关变量,我们先看个人信息变量(性别、婚姻状况、教育情况、年龄),一般离散型的变量我们可以用下面的命令判断。
df.MARRIAGE.unique()
Out[10]: array([1, 2, 3, 0], dtype=int64)
df.SEX.unique()
Out[12]: array([2, 1], dtype=int64)df.EDUCATION.unique()
Out[13]: array([2, 1, 3, 5, 4, 6, 0], dtype=int64)
根据以上的信息和数据说明,我们发现在婚姻状况和教育状况出现了异常值,我们利用下面这些命令,看一下大约有多少数,最终我们发现这些部分数是很小的一部分,可以直接删掉。
len(df.loc[df['EDUCATION']==0]) # 省略了其他的计数
Out[16]: 14
# 注意我们将‘其他’也删掉了,说明我们只想知道确定的信息
data1 = df[~df['MARRIAGE'].isin([0, 3])]
df = data1[~data1['EDUCATION'].isin([0, 4, 5, 6])]
到这一步,我们还剩下29163条数据,数据量还是很多的。接下来我们看其他列的数据。
一般我们用箱线图看是否有异常值。
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['Microsoft YaHei'] #这是一定要设置的,否则无法显示中文
fig = plt.figure(figsize = (5 ,10))
plt.boxplot(df['AGE'],patch_artist=True,labels = ['年龄'], # 设置x轴标题boxprops = {'facecolor':'lightblue'}) # 设置填充颜色
plt.title('年龄分布箱线图')
plt.savefig(r'C:\Users\Administrator\Desktop\python\项目\信用卡逾期项目\年龄箱线图.png')fig = plt.figure(figsize = (10 ,10))
plt.boxplot(df['LIMIT_BAL'],patch_artist=True,labels = ['额度'], # 设置x轴标题boxprops = {'facecolor':'lightblue'}) # 设置填充颜色
plt.title('额度分布箱线图')
plt.savefig(r'C:\Users\Administrator\Desktop\python\项目\信用卡逾期项目\额度箱线图.png')
至此,我们还剩下18列,这18列是跟信用卡相关的变量,很有可能会影响最终结果,我们可以像婚姻状况一样去查看异常值,比如说,X6-X11:过去的付款历史。我们可以用unique()函数去看是否有不同于分类的变量,发现并没有,保留这18列。
最后我们的数据清洗就到这里结束。我们进入下一个环节。
二、相关性分析
我们可以将每一列数据与标签进行画图分析,比如说:
pd.crosstab(df['SEX'],df['default payment next month']).plot.bar()
plt.savefig(r'C:\Users\Administrator\Desktop\python\项目\信用卡逾期项目\性别与label.png')
貌似好像女性的守约率高一些,我们也可以就类似的进行相关分析,但总感觉太麻烦了,我们可以直接利用相关性函数corr( )。
df.corr()['default payment next month'].sort_values()
Out[41]:
LIMIT_BAL -0.153576
PAY_AMT1 -0.076875
PAY_AMT2 -0.060498
PAY_AMT4 -0.057570
PAY_AMT3 -0.057326
PAY_AMT5 -0.055789
PAY_AMT6 -0.054372
SEX -0.038963
MARRIAGE -0.031437
BILL_AMT1 -0.019072
BILL_AMT2 -0.013648
BILL_AMT3 -0.013589
BILL_AMT4 -0.009542
BILL_AMT5 -0.006150
BILL_AMT6 -0.004862
AGE 0.012983
EDUCATION 0.055502
PAY_6 0.187013
PAY_5 0.203990
PAY_4 0.214627
PAY_3 0.234362
PAY_2 0.263981
PAY_0 0.327230
default payment next month 1.000000
Name: default payment next month, dtype: float64
这样我们发现发现 LIMIT_BAL、PAY_0 、PAY_2、 PAY_3 、PAY_4 、 PAY_5 、 PAY_6 与 default payment next month 相关系数会更大一些,我们也可以画相关的热力图.
好了,到这里我们的数据初探已经结束啦,大家可以回去试一下,很简单,也可以做一些可视化处理。
我拿到数据时,也做了一些数据可视化处理,比如说下图。
好了,下篇文章将如何进行相关的预测分析啦,敬请期待!
信用卡逾期项目初探(数据清洗与特征选择)相关推荐
- 夫妻一方信用卡逾期,另外一方会受到牵连吗?
是否有影响要看具体情况,下面我们就分不同的情况来看一下,夫妻一方信用卡逾期,另一方是否会受到影响. 先来看下夫妻一方信用卡逾期之后,另一方是否需要偿还. 夫妻一方信用卡逾期之后另一方是否需要偿还,关 ...
- 【附源码】计算机毕业设计java信用卡逾期数据处理分析系统设计与实现
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- 计算机毕业设计(附源码)python信用卡逾期数据处理分析系统
项目运行 环境配置: Pychram社区版+ python3.7.7 + Mysql5.7 + HBuilderX+list pip+Navicat11+Django+nodejs. 项目技术: dj ...
- java计算机毕业设计信用卡逾期数据处理分析系统源程序+mysql+系统+lw文档+远程调试
java计算机毕业设计信用卡逾期数据处理分析系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计信用卡逾期数据处理分析系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈 ...
- 逾期怎么处理_招商信用卡逾期三个月银行起诉我怎么处理?信用卡逾期一年半收到短信发到户籍所在地...
问题1 网友问:我招商逾期之后跟银行协商他们必须让我先还一部分钱在给分期这个是真的吗?阿举答:信用卡逾期以后,大家有没有经常遇到催收这么打电话说先还30%或者50%,再不行10%也可以,然后以下的可以 ...
- 信用卡逾期记录已经超过5年,为何还不能申请贷款?
针对你这个问题,首先你需要确认的是你的征信是否真的没有逾期记录了. 根据我国征信管理条例的规定,个人信息记录最长保留5年时间,而这个5年时间是有前提的,这个前提就是你结清所有的欠款,包括本金罚息以及其 ...
- 信用卡逾期不还是否要坐牢?看法律是怎么规定的
信用卡不还款要坐牢?估计这事情说的有点严重,但事实上确实有不少人因为信用卡逾期还不上而被法院判刑了的. 我们先来看2个实际的案例. 案例1: 萍乡一贸易老板经常套现信用卡用于偿还债务.2014年5月开 ...
- 信用卡逾期三个月以上不还?小心坐牢!
最近有个网友反映,他的信用卡逾期了三个多月,最近银行寄来了法院的传票,所以他担心自己是不是要坐牢了. 用卡逾期三个月是否要坐牢,最关键的一点是你的信用卡透支是否构成信用卡诈骗罪. 一.如何判定是否构成 ...
- 信用卡逾期了还能网上贷款吗?
信用卡逾期了,如果准备的申请的网络贷款需要查询个人征信报告,那么征信不良时就无法申请这类网络贷款.而用户申请的网络贷款不需要查征信,那么用户在信用卡逾期后,仍然可以申请这类网络贷款,但是这就要求用户网 ...
最新文章
- linux shell 单行多行注释
- [转]ECMAScript 6 入门 -编程风格
- MagicDraw UML 16.8 安装教程
- NYOJ 679 The Weight of Tree 搜索+dp+邻接表
- linux程序设计百度网盘,linux系统编程视频 百度网盘下载
- js 页面载入时的执行顺序
- Photopile JS – 帮助你实现精致的照片堆叠效果
- 复变函数:复数基本知识、欧拉公式、复变函数的导数、解析函数
- AI:人工智能领域之AI的发展历史图集合、AI发展思维导图之详细攻略
- Microbiome:中国科学家完成鸡肠道微生物宏基因集的构建(一作解读,张和平、魏泓、秦楠点评)
- 【c++】计算句子中单词的平均长度
- C++实现简单的停车场管理系统
- 浅谈Java中类的相关内容
- python操作数据库统计_python数据库-MySQL单表查询基本操作(50)
- C语言笔记 | 一元二次方程
- mysql 更改密码 alter_MySQL修改账号密码方法大全
- 微软Teams在上海的内部Workshop
- 从零开始配置使用JACKAL移动机器人
- Trip.com W1D5
- 厦大C语言上机 2020年期末上机考试 移车问题