【天池比赛】【零基础入门金融风控 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()
运行结果:
id | loanAmnt | term | interestRate | installment | employmentTitle | homeOwnership | annualIncome | verificationStatus | isDefault | ... | n5 | n6 | n7 | n8 | n9 | n10 | n11 | n12 | n13 | n14 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
count | 800000.000000 | 800000.000000 | 800000.000000 | 800000.000000 | 800000.000000 | 799999.000000 | 800000.000000 | 8.000000e+05 | 800000.000000 | 800000.000000 | ... | 759730.000000 | 759730.000000 | 759730.000000 | 759729.000000 | 759730.000000 | 766761.000000 | 730248.000000 | 759730.000000 | 759730.000000 | 759730.000000 |
mean | 399999.500000 | 14416.818875 | 3.482745 | 13.238391 | 437.947723 | 72005.351714 | 0.614213 | 7.613391e+04 | 1.009683 | 0.199513 | ... | 8.107937 | 8.575994 | 8.282953 | 14.622488 | 5.592345 | 11.643896 | 0.000815 | 0.003384 | 0.089366 | 2.178606 |
std | 230940.252015 | 8716.086178 | 0.855832 | 4.765757 | 261.460393 | 106585.640204 | 0.675749 | 6.894751e+04 | 0.782716 | 0.399634 | ... | 4.799210 | 7.400536 | 4.561689 | 8.124610 | 3.216184 | 5.484104 | 0.030075 | 0.062041 | 0.509069 | 1.844377 |
min | 0.000000 | 500.000000 | 3.000000 | 5.310000 | 15.690000 | 0.000000 | 0.000000 | 0.000000e+00 | 0.000000 | 0.000000 | ... | 0.000000 | 0.000000 | 0.000000 | 1.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 |
25% | 199999.750000 | 8000.000000 | 3.000000 | 9.750000 | 248.450000 | 427.000000 | 0.000000 | 4.560000e+04 | 0.000000 | 0.000000 | ... | 5.000000 | 4.000000 | 5.000000 | 9.000000 | 3.000000 | 8.000000 | 0.000000 | 0.000000 | 0.000000 | 1.000000 |
50% | 399999.500000 | 12000.000000 | 3.000000 | 12.740000 | 375.135000 | 7755.000000 | 1.000000 | 6.500000e+04 | 1.000000 | 0.000000 | ... | 7.000000 | 7.000000 | 7.000000 | 13.000000 | 5.000000 | 11.000000 | 0.000000 | 0.000000 | 0.000000 | 2.000000 |
75% | 599999.250000 | 20000.000000 | 3.000000 | 15.990000 | 580.710000 | 117663.500000 | 1.000000 | 9.000000e+04 | 2.000000 | 0.000000 | ... | 11.000000 | 11.000000 | 10.000000 | 19.000000 | 7.000000 | 14.000000 | 0.000000 | 0.000000 | 0.000000 | 3.000000 |
max | 799999.000000 | 40000.000000 | 5.000000 | 30.990000 | 1715.420000 | 378351.000000 | 5.000000 | 1.099920e+07 | 2.000000 | 1.000000 | ... | 70.000000 | 132.000000 | 79.000000 | 128.000000 | 45.000000 | 82.000000 | 4.000000 | 4.000000 | 39.000000 | 30.000000 |
2.3.4 查看数据集中特征缺失值,唯一值等
2.3.4.1 查看缺失值
data_train.isnull()
运行结果:
id | loanAmnt | term | interestRate | installment | grade | subGrade | employmentTitle | employmentLength | homeOwnership | ... | n5 | n6 | n7 | n8 | n9 | n10 | n11 | n12 | n13 | n14 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | False | False | False | False | False | False | False | False | False | False | ... | False | False | False | False | False | False | False | False | False | False |
1 | False | False | False | False | False | False | False | False | False | False | ... | True | True | True | True | True | False | True | True | True | True |
2 | False | False | False | False | False | False | False | False | False | False | ... | False | False | False | False | False | False | False | False | False | False |
3 | False | False | False | False | False | False | False | False | False | False | ... | False | False | False | False | False | False | False | False | False | False |
4 | False | False | False | False | False | False | False | False | True | False | ... | False | False | False | False | False | False | False | False | False | False |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
799995 | False | False | False | False | False | False | False | False | False | False | ... | False | False | False | False | False | False | False | False | False | False |
799996 | False | False | False | False | False | False | False | False | False | False | ... | False | False | False | False | False | False | False | False | False | False |
799997 | False | False | False | False | False | False | False | False | False | False | ... | False | False | False | False | False | False | False | False | False | False |
799998 | False | False | False | False | False | False | False | False | False | False | ... | False | False | False | False | False | False | False | False | False | False |
799999 | False | False | False | False | False | False | False | False | False | False | ... | False | False | False | False | False | False | False | False | False | False |
#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’具有一个唯一值(或全部缺失)。
欲知后事如何,且听下回分解……………………
相关文章:

【天池比赛】【零基础入门金融风控 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 读取文件 #读取数据时相对路径载入报错时…...

配置Windows内核开发环境
前言 以前在书上看到,说现在的安全软件已经将对抗转移到内核层了,深以为然。 因为像360安全卫士,腾讯电脑管家这样的安全软件,仅通过用户层api很难做到更高级的防御和控制。 早些年我想获取电脑硬盘的详细使用信息,…...

nanoGPT用红楼梦数据从头训练babyGPT-12.32M实现任意问答
1. 引入 大神karpathy从openai离职后,创办了AI教育公司Eureka Labs(参考1),同时也创办了知名的nanoGPT项目。 目前,使用nanoGPT(参考2),你可以在几分钟内训练出一个babyGPT…...

PDF转图片的思路思考
记录时间:2022年9月1日 PDF转图片库的使用和扩展 python有几个开源的免费的处理Pdf的库,甚至有的已经有很完善的功能了。我发挥一下自己的所学,看看能不能把它变为可用的一程序。 首先是了解PDF处理库PyMupdf,这个库得到路径之后普就可以对…...

lnmp - 登录技术方案设计与实现
概述 登录功能是对于每个动态系统来说都是非常基础的功能,用以区别用户身份、和对应的权限和信息,设计出一套安全的登录方案尤为重要,接下来我介绍一下常见的认证机制的登录设计方案。 方案设计 HTTP 是一种无状态的协议,客户端…...

如何在 Qt 的 QListWidget 中逐行添加和显示数据
文章目录 如何在 Qt 的 QListWidget 中逐行添加和显示数据目标实现步骤1. 在 Qt Designer 中添加 QListWidget2. 在代码中逐行添加数据示例代码 代码解析3. 使用自定义项 运行效果总结 如何在 Qt 的 QListWidget 中逐行添加和显示数据 QListWidget 是 Qt 提供的一个非常方便的…...

Java API 之集合框架进阶
前言: 本文主要讲解集合框架中的List、Set、Map接口中的进阶知识,主要是分析其底层原理和优缺点。 1. List 接口 1.1 ArrayList import java.util.ArrayList; import java.util.List;public class ArrayListExample {public static void main(String[] …...

Java String isEmpty()方法
在Java中,String 类的 isEmpty() 方法用来检测一个字符串是否为空。以下是一些关于此方法的关键信息: 方法声明:public boolean isEmpty()功能:通过检查字符串的长度来判断字符串是否为空。返回值:如果字符串为空则返…...

Redisson分布式锁分析,可重入、可续锁(看门狗)
前言 在此说明,本文章不只是讲一些抽象的概念,而是可落地的,在日常工作中基本上进行修改一下便可以使用。书接上回,上篇自研分布式锁的文章使用是一个自己手写的一个分布式锁,按照JUC里面java.util.concurrent.locks.L…...

C++掉血迷宫
目录 开头程序程序的流程图程序游玩的效果下一篇博客要说的东西 开头 大家好,我叫这是我58。 程序 #include <iostream> #include <string> #include <cstring> using namespace std; enum RBYG {R 1,B 2,Y 4,G 7, }; struct heal {int ix…...

Spring Boot- 数据库相关问题
Spring Boot 与数据库相关问题及其解决方案 1. 引言 Spring Boot简化了Java企业级应用的开发,尤其在与数据库交互方面提供了诸多便利。Spring Boot提供了多种数据库集成方案,涵盖关系型数据库(如MySQL、PostgreSQL等)与非关系型…...

秒懂C++之特殊类设计
目录 设计一个类,不能被拷贝 设计一个类,只能在堆上创建对象 设计一个类,只能在栈上创建对象 设计一个类,无法被继承 设计一个类,只能创建一个对象(单例模式) 饿汉模式 懒汉模式 设计一个类,不能被拷…...

人工智能学习
🌐前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。 👉【点击跳转到网站:人工智能教程】 什么是人工智能?通俗来讲,就是让机器能像人一样思考。这…...

WINDOWS AGENTARENA:EVALUATING MULTI-MODAL OS AGENTS AT SCALE论文学习
文章开头说现有的agent都是局限于特定领域(什么网络问答啊,仅限文字啊,仅限于某一个app啊)这样的,本文的工作主打一个贴近用户使用场景,用户用什么软件,看什么网页,本文的模型就用什…...

3步轻松定制报价方案,亿发商城报价神器你用过了吗?
如果您正寻求突破传统业务模式的束缚,希望拥抱数字化转型带来的无限可能,我们诚邀您体验亿发软件。亿发专业团队将为您提供个性化的咨询和定制服务,帮助您的企业快速适应市场变化,实现业务模式和商业模式的创新。...

CISP备考题库(五)
在当今这个飞速发展的数字化时代,信息安全已跃居至前所未有的战略地位,其重要性伴随着技术的日新月异而持续攀升,成为了一个不容小觑的关键领域。为了激发并引领广大青年才俊积极投身于网络安全专家的崇高事业,我们精心策划并编纂…...

【Kubernetes】常见面试题汇总(二十三)
目录 69.考虑一家拥有分布式系统的跨国公司,拥有大量数据中心,虚拟机和许多从事各种任务的员工。您认为这样公司如何以与 Kubernetes 一致的方式管理所有任务? 70.考虑一种情况,即公司希望通过维持最低成本来提高其效率和技术运营…...

linux-Shell 编程-Shell 脚本基础
Linux Shell 编程:Shell 脚本基础 在Linux系统中,Shell脚本是一种强大的自动化工具。通过编写Shell脚本,用户可以自动化重复性任务、系统管理操作和程序控制流程,极大提高工作效率。 1. 什么是Shell脚本? Shell脚本是…...

Linux运维篇-tigervnc工具的使用
目录 简介下载使用clientserver配置文件服务管理 设定密码(先切换成对应的用户):配置多用户的VNC tigervnc连接排错一、vnc密码错误二、vncserver端口忘记了三、连接很卡,或者画面没有反应四、服务报错 简介 TigerVNC是VNC的一种…...

基于Spark的电影推荐系统设计与实现(论文+源码)_kaic
摘 要 在云计算、物联网等技术的带动下,我国已步入大数据时代。电影是人们日常生活中重要的一种娱乐方式,身处大数据时代,各种类型、题材的电影层出不穷,面对琳琅满目的影片,人们常感到眼花缭乱。因此,如…...

基于python+django+vue的医院预约挂号系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…...

镀金引线---
一、沉金和镀金 沉金和镀金都是常见的PCB金手指处理方式,它们各有优劣势,选择哪种方式取决于具体的应用需求和预算。 沉金(ENIG)是一种常用的金手指处理方式,它通过在金手指表面沉积一层金层来提高接触性能和耐腐蚀性…...

『功能项目』窗口可拖拽脚本【59】
本章项目成果展示 我们打开上一篇58第三职业弓弩的平A的项目, 本章要做的事情是给坐骑界面挂载一个脚本让其显示出来的时候可以进行拖拽 创建脚本:DraggableWindow.cs using UnityEngine; using UnityEngine.EventSystems; public class DraggableWindo…...

Map--08--CurrentHashMap 与 Hashtable的异同?
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Map方法computeIfAbsent1.computeIfAbsent 方法的简介2.案例computeIfAbsent() Map方法computeIfAbsent computeIfAbsent方法是Java 8中引入的一种简化操作Map的方…...

Docker学习笔记(三)存储与卷
挂载机制介绍 我们都知道,默认下,Docker容器与宿主机是完全隔离的,这种特性使得我们创建与删除容器都变得更方便,不需要再去删除宿主机上容器遗留下来的痕迹。 但是,当我们使用数据库一类需要持久化数据、共享数据…...

硬件工程师笔试面试——滤波器
目录 12、滤波器 12.1 基础 滤波器原理图 滤波器实物图 12.1.1 概念 12.1.2 滤波器的分类 12.1.3 滤波器的工作原理 12.1.4 滤波器的应用 12.1.5 滤波器设计的关键参数 12.2 相关问题 12.2.1 不同类型的滤波器在实际应用中的具体作用是什么? 12.2.2 如何设计一个简…...

【SpringBoot3】面向切面 AspectJ AOP 使用详解
文章目录 一、AspectJ介绍二、简单使用步骤1、引入依赖2、定义一个Aspect3、开启AOP支持 三、AOP 核心概念四、切点(Pointcut)1. execution2. within3. this & target4. args & args5. within & target & annotation 五、通知࿰…...

wav怎么转mp3格式?给你推荐几种音频格式转换方法
wav怎么转mp3格式?将wav文件转换为MP3格式是一个常见的操作,尤其适用于需要节省存储空间或确保文件兼容性的场景。wav文件保存了音频的所有原始数据,这使得它们的文件体积往往非常庞大。相比之下,MP3格式通过有损压缩技术显著减小…...

Redis的AOF持久化、重写机制、RDB持久化、混合持久化
1、AOF持久化 1.1.AOF持久化大致过程 概括:命令追加(append)、文件写入、文件同步(sync) Redis 每执行一条写操作命令,就把该命令以追加的方式写入到一个文件里,然后重启 Redis 的时候&#…...

Dom4j使用xpath查询xml文
Dom4j使用xpath查询带有命名空间的xml文件 方式1 忽略命名空间 DocumentFactory factory DocumentFactory.getInstance(); SAXReader reader new SAXReader(factory); Document document reader.read(xmlFilePath); Element rootElement document.getRootElement(); Nod…...