金融风控训练营TASK02学习笔记

金融风控训练营TASK02学习笔记

学习知识点概要

  • 数据特征的基本含义
  • 一些统计学的基础知识
  • 一些库和方法的基础知识
  • pandas_profiling的使用

学习内容

1、读取文件的部分

  • 通过nrows参数,来设置读取文件的前多少行,nrows是一个大于等于0的整数。
# nrows=5表示一次读取5行
data_train_sample = pd.read_csv("train.csv",nrows=5)
  • 分块读取
# 设置chunksize参数,来控制每次迭代数据的大小
chunker = pd.read_csv("train.csv",chunksize=5)
# chunker表示train分成5行每份的dataframe

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,为一些贷款人行为计数特征的处理

3、print(f’’)

  • Python3.6新增了一种f-字符串格式化
    格式化的字符串文字前缀为’f’和接受的格式字符串相似str.format()。它们包含由花括号包围的替换区域。替换字段是表达式,在运行时进行评估,然后使用format()协议进行格式化。
  • 增 print(r’’)
    Python 中字符串的前导 r 代表原始字符串标识符,也就是说 用r’ ‘表示’ '内部的字符串默认不转义

4、缺失特征和缺失率的可视化

missing = data_train.isnull().sum()/len(data_train)
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()
  • 纵向:主要的目的在于查看某一列nan存在的个数是否真的很大,如果nan存在的过多,可以考虑删掉。如果缺失值很小一般可以选择填充。
  • 横向:某些样本数据的大部分列都是缺失的且样本足够的情况下可以考虑删除。
  • lgb、xgb、树模型与神经网络都可以自动处理缺失值

5、特征的数值类型、对象类型

  • 特征一般都是由类别型特征和数值型特征组成,而数值型特征又分为连续型和离散型。
  • 类别型特征有时具有非数值关系,有时也具有数值关系。比如‘grade’中的等级A,B,C等,是否只是单纯的分类,还是A优于其他要结合业务判断。

6、select_dtypes()

  • 做数据分析时,需要对特征进行归类–类别型还是数值型,pandas提供了select_dtypes函数,函数原型:
    DataFrame.select_dtypes(include=None, exclude=None)
    include:选取该类型
    exclude:选取除该类型以外的类型
# exclude=['object'] 表示选取除object类型以外的所有类型
#numerical_fea 是一个装着除object类型以外所有类型的特征的列表
numerical_fea = list(data_train.select_dtypes(exclude=['object']).columns)

7、filter()

  • filter()函数用于过滤序列,过滤掉不符合条件的元素,返回符合条件的元素组成新列表。
    filter(function,iterable)
# 把data_train的各个特种中不在numerical_fea列表中的特征过滤出来
filter(lambda x: x not in numerical_fea,list(data_train.columns))

8、数值连续型变量分析

查看某一个数值型变量的分布,查看变量是否符合正态分布,如果不符合正太分布的变量可以log化后再观察下是否符合正态分布。
如果想统一处理一批数据变标准化 必须把这些之前已经正态化的数据提出
正态化的原因:一些情况下正态非正态可以让模型更快的收敛,一些模型要求数据正态(eg. GMM、KNN),保证数据不要过偏态即可,过于偏态可能会影响模型预测结果。

8.1 melt()

8.2 facetgrid()、map()

9、groupby()

这里找到两个自认为比较好的groupby讲解,链接如下:

10、seaborn()

cell里面有2~3个方法是我比较陌生的,我先给提出来:

其次seaborn本身也属于使用率比较高的库了,找到一个介绍seaborn比较全面的博客,日后自己也可以回来复习

10、时间格式数据处理及查看

  • 由字符串格式转化为日期格式的函数为: datetime.datetime.strptime()。我们输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:
startdate = datetime.datetime.strptime('2007-06-01', '%Y-%m-%d')

11、透视图pivot_table()

学习问题与解答

pandas_profiling的使用

  • 在天池DSW上报错
pfr = pandas_profiling.ProfileReport(data_train)
pfr.to_file("./example.html")

强行运行就会出现下面的错误:
金融风控训练营TASK02学习笔记

  • 在自己的jupyter notebook上报错
    金融风控训练营TASK02学习笔记去其他博客查找到的原因
    猜测是因为pandas的版本过于旧了,用命令pip list --outdated 查看pandas_profiling是否存在在里面,一查果然在里面,于是更新一下package。pip的更新命令去CSDN搜了很多,可能能力不够?没有搜出我想要的,于是向训练营的助教请教:
    更新命令为:python -m pip install -U pip package(再次感谢叶同学)
python -m pip install -U pip pandas_profiling

更新之后,已经可以正常运行了,三行代码就可以给出一个数据分析报告,还是挺香的。

import pandas_profiling

pfr=pandas_profiling.ProfileReport('data_train')
pfr.to_file('report.html')

这里给出一些报告里的内容:

  • 比如数据概况
    金融风控训练营TASK02学习笔记
  • 变量的分布情况:
    金融风控训练营TASK02学习笔记
  • 其中还能点开Toggle details查看更详细的分析。
    金融风控训练营TASK02学习笔记
  • 分析出无用的特征
    金融风控训练营TASK02学习笔记
  • 相关性
    金融风控训练营TASK02学习笔记
  • 缺失数据
    金融风控训练营TASK02学习笔记
    官方文档地址(github)

学习思考与总结

  • 这几天的task02学习,算是巩固和拓展了一下自己的基础知识吧。因为本人是用python做优化算法的(说的好像很高深,但其实也就是面向百度编程),虽然有python的基础知识吧,但对于数据挖掘最多最多就停留在数据可视化这一环节,通过对task02的学习,除了巩固基础知识,还有了解到了之前没见过但是也属于常见的内容,比如print()函数还可以这样玩(print(f’’)),这方面我算是新手了,所以都把这些知识放在学习内容上面。
  • pandas_profiling 这个包真的很厉害,在搞定完版本错误后,只需要三行代码,就几乎可以做到整个task02的工作了。另外还得说一句,训练营给我的最好的体验就是搜不到答案时,还有专业的人给你指导,虽然有强调不能一遇到问题就靠别人,但是。。。随时都有人能给予你帮助的感觉真的太香了!唉,要是人生也有训练营就好了(bushi

那么总的来说,数据分析与可视化这个task也还是属于基础环节,在这一part你做的操作,除非是要对数据进行处理,不然对后面可以说没什么影响。从task03开始才是真正的重头戏,那就,加油吧,打工人!

https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.20850282.J_3678908510.4.18a34d57pn0nTe&postId=170949

上一篇:011、赋值=、浅拷贝copy、深拷贝deepcopy


下一篇:【DB笔试面试360】MySQL中的profile的意义以及使用场景有哪些?