当前位置: 首页 > news >正文

【天池比赛】【零基础入门金融风控 Task2赛题理解】实战进行中……20240915更新至2.3.4.3 查看训练集测试集中特征属性只有一值的特征

2.3 代码示例

2.3.1 导入数据分析及可视化过程需要的库

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import datetime
import warnings
warnings.filterwarnings('ignore')

2.3.2 读取文件

#读取数据时相对路径载入报错时,尝试使用os.getcwd()查看当前工作目录
data_train = pd.read_csv(os.getcwd()+'//零基础入门金融风控-贷款违约预测//data//train.csv')
data_test_a = pd.read_csv(os.getcwd()+'//零基础入门金融风控-贷款违约预测//data//testA.csv')

运行结果:


2.3.2.1读取文件的拓展知识

  • TSV与CSV的区别:
    • 从名称上即可知道,TSV是用制表符(Tab,'\t')作为字段值的分隔符;CSV是用半角逗号(',')作为字段值的分隔符;
    • Python对TSV文件的支持: Python的csv模块准确的讲应该叫做dsv模块,因为它实际上是支持范式的分隔符分隔值文件(DSV,delimiter-separated values)的。 delimiter参数值默认为半角逗号,即默认将被处理文件视为CSV。当delimiter='\t'时,被处理文件就是TSV。
  • 读取文件的部分(适用于文件特别大的场景)
    • 通过nrows参数,来设置读取文件的前多少行,nrows是一个大于等于0的整数。
    • 分块读取
data_train_sample = pd.read_csv(data_train_path,nrows=5)
print(data_train_sample)#设置chunksize参数,来控制每次迭代数据的大小
chunker = pd.read_csv(data_train_path,chunksize=5)
for item in chunker:print(type(item))print(len(item))break

  运行结果:


2.3.3总体了解

2.3.3.1 查看数据集的样本个数和原始特征维度
data_train.shape
data_test.shape
data_train.columns

运行结果:

2.3.3.2 查看一下具体的列名,赛题理解部分已经给出具体的特征含义,这里方便阅读再给一下:
  • id 为贷款清单分配的唯一信用证标识

  • loanAmnt 贷款金额

  • term 贷款期限(year)

  • interestRate 贷款利率

  • installment 分期付款金额

  • grade 贷款等级

  • subGrade 贷款等级之子级

  • employmentTitle 就业职称

  • employmentLength 就业年限(年)

  • homeOwnership 借款人在登记时提供的房屋所有权状况

  • annualIncome 年收入

  • verificationStatus 验证状态

  • issueDate 贷款发放的月份

  • purpose 借款人在贷款申请时的贷款用途类别

  • postCode 借款人在贷款申请中提供的邮政编码的前3位数字

  • regionCode 地区编码

  • dti 债务收入比

  • delinquency_2years 借款人过去2年信用档案中逾期30天以上的违约事件数

  • ficoRangeLow 借款人在贷款发放时的fico所属的下限范围

  • ficoRangeHigh 借款人在贷款发放时的fico所属的上限范围

  • openAcc 借款人信用档案中未结信用额度的数量

  • pubRec 贬损公共记录的数量

  • pubRecBankruptcies 公开记录清除的数量

  • revolBal 信贷周转余额合计

  • revolUtil 循环额度利用率,或借款人使用的相对于所有可用循环信贷的信贷金额

  • totalAcc 借款人信用档案中当前的信用额度总数

  • initialListStatus 贷款的初始列表状态

  • applicationType 表明贷款是个人申请还是与两个共同借款人的联合申请

  • earliesCreditLine 借款人最早报告的信用额度开立的月份

  • title 借款人提供的贷款名称

  • policyCode 公开可用的策略代码=1新产品不公开可用的策略代码=2

  • n系列匿名特征 匿名特征n0-n14,为一些贷款人行为计数特征的处理


2.3.3.3  通过info()来熟悉数据类型
data_train.info()

运行结果:


2.3.3.4 总体粗略的查看数据集各个特征的一些基本统计量
data_train.describe()

运行结果:

idloanAmntterminterestRateinstallmentemploymentTitlehomeOwnershipannualIncomeverificationStatusisDefault...n5n6n7n8n9n10n11n12n13n14
count800000.000000800000.000000800000.000000800000.000000800000.000000799999.000000800000.0000008.000000e+05800000.000000800000.000000...759730.000000759730.000000759730.000000759729.000000759730.000000766761.000000730248.000000759730.000000759730.000000759730.000000
mean399999.50000014416.8188753.48274513.238391437.94772372005.3517140.6142137.613391e+041.0096830.199513...8.1079378.5759948.28295314.6224885.59234511.6438960.0008150.0033840.0893662.178606
std230940.2520158716.0861780.8558324.765757261.460393106585.6402040.6757496.894751e+040.7827160.399634...4.7992107.4005364.5616898.1246103.2161845.4841040.0300750.0620410.5090691.844377
min0.000000500.0000003.0000005.31000015.6900000.0000000.0000000.000000e+000.0000000.000000...0.0000000.0000000.0000001.0000000.0000000.0000000.0000000.0000000.0000000.000000
25%199999.7500008000.0000003.0000009.750000248.450000427.0000000.0000004.560000e+040.0000000.000000...5.0000004.0000005.0000009.0000003.0000008.0000000.0000000.0000000.0000001.000000
50%399999.50000012000.0000003.00000012.740000375.1350007755.0000001.0000006.500000e+041.0000000.000000...7.0000007.0000007.00000013.0000005.00000011.0000000.0000000.0000000.0000002.000000
75%599999.25000020000.0000003.00000015.990000580.710000117663.5000001.0000009.000000e+042.0000000.000000...11.00000011.00000010.00000019.0000007.00000014.0000000.0000000.0000000.0000003.000000
max799999.00000040000.0000005.00000030.9900001715.420000378351.0000005.0000001.099920e+072.0000001.000000...70.000000132.00000079.000000128.00000045.00000082.0000004.0000004.00000039.00000030.000000

2.3.4 查看数据集中特征缺失值,唯一值等

2.3.4.1 查看缺失值
data_train.isnull()

运行结果: 

idloanAmntterminterestRateinstallmentgradesubGradeemploymentTitleemploymentLengthhomeOwnership...n5n6n7n8n9n10n11n12n13n14
0FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
1FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...TrueTrueTrueTrueTrueFalseTrueTrueTrueTrue
2FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
3FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
4FalseFalseFalseFalseFalseFalseFalseFalseTrueFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
..................................................................
799995FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
799996FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
799997FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
799998FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse
799999FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse...FalseFalseFalseFalseFalseFalseFalseFalseFalseFalse


#isnull().any()会判断哪些列包含缺失值,该列存在缺失值则返回True,反之False
data_train.isnull().any()

 运行结果:

print(f'There are {data_train.isnull().any().sum()} columns in train dataset with missing values.')

结果分析:上面得到训练集有22列特征有缺失值,进一步查看缺失特征中缺失率大于50%的特征


2.3.4.2 具体的查看缺失特征及缺失率
#纵向了解哪些列存在 “nan”
missing = data_train.isnull().sum()
print(missing)

运行结果: 


  • 纵向,找到存在 “nan”,的列, 并可以把nan的个数打印,主要的目的在于查看某一列nan存在的个数是否真的很大,如果nan存在的过多,说明这一列对label的影响几乎不起作用了,可以考虑删掉。如果缺失值很小一般可以选择填充。
  • 横向,如果在数据集中,某些样本数据的大部分列都是缺失的且样本足够的情况下可以考虑删除
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()

  运行结果:


2.3.4.3 查看训练集测试集中特征属性只有一值的特征
  • nunique()函数由pandas库提供,返回DataFrame数据中每列不重复数值的个数
one_value_fea = [col for col in data_train.columns if data_train[col].nunique() <= 1]
one_value_fea_test = [col for col in data_test_a.columns if data_test_a[col].nunique() <= 1]
one_value_fea
one_value_fea_test

运行结果:

2.3.4.4 总结
  • 47列数据中有22列都缺少数据。‘policyCode’具有一个唯一值(或全部缺失)。

欲知后事如何,且听下回分解……………………

http://www.lryc.cn/news/440781.html

相关文章:

  • 配置Windows内核开发环境
  • nanoGPT用红楼梦数据从头训练babyGPT-12.32M实现任意问答
  • PDF转图片的思路思考
  • lnmp - 登录技术方案设计与实现
  • 如何在 Qt 的 QListWidget 中逐行添加和显示数据
  • Java API 之集合框架进阶
  • Java String isEmpty()方法
  • Redisson分布式锁分析,可重入、可续锁(看门狗)
  • C++掉血迷宫
  • Spring Boot- 数据库相关问题
  • 秒懂C++之特殊类设计
  • 人工智能学习
  • WINDOWS AGENTARENA:EVALUATING MULTI-MODAL OS AGENTS AT SCALE论文学习
  • 3步轻松定制报价方案,亿发商城报价神器你用过了吗?
  • CISP备考题库(五)
  • 【Kubernetes】常见面试题汇总(二十三)
  • linux-Shell 编程-Shell 脚本基础
  • Linux运维篇-tigervnc工具的使用
  • 基于Spark的电影推荐系统设计与实现(论文+源码)_kaic
  • 基于python+django+vue的医院预约挂号系统
  • 镀金引线---
  • 『功能项目』窗口可拖拽脚本【59】
  • Map--08--CurrentHashMap 与 Hashtable的异同?
  • Docker学习笔记(三)存储与卷
  • 硬件工程师笔试面试——滤波器
  • 【SpringBoot3】面向切面 AspectJ AOP 使用详解
  • wav怎么转mp3格式?给你推荐几种音频格式转换方法
  • Redis的AOF持久化、重写机制、RDB持久化、混合持久化
  • Dom4j使用xpath查询xml文
  • 国家专精特新小巨人企业指标解析与扶持领域