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

本学习笔记为阿里云天池龙珠计划金融风控训练营的学习内容,学习链接为:https://tianchi.aliyun.com/specials/activity/promotion/aicampfr

学习知识点概要

  • 数据特征的基本含义
  • 一些统计学的基础知识
  • 一些库和方法的基础知识
  • 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")

强行运行就会出现下面的错误:

  • 在自己的jupyter notebook上报错
    在这里插入图片描述去其他博客查找到的原因
    猜测是因为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')

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

  • 比如数据概况
    数据预览
  • 变量的分布情况:
    在这里插入图片描述
  • 其中还能点开Toggle details查看更详细的分析。
    在这里插入图片描述
  • 分析出无用的特征
    在这里插入图片描述
  • 相关性
    在这里插入图片描述
  • 缺失数据
    在这里插入图片描述
    官方文档地址(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
代码随想录算法训练营是一个优质的学习和讨论平台,提供了丰富的算法训练内容和讨论交流机会。在训练营中,学员们可以通过观看视频讲解来学习算法知识,并根据讲解内容进行刷题练习。此外,训练营还提供了刷题建议,例如先看视频、了解自己所使用的编程语言、使用日志等方法来提高刷题效果和语言掌握程度。 训练营中的讨论内容非常丰富,涵盖了各种算法知识点和解题方法。例如,在第14天的训练营中,讲解了二叉树的理论基础、递归遍历、迭代遍历和统一遍历的内容。此外,在讨论中还分享了相关的博客文章和配图,帮助学员更好地理解和掌握二叉树的遍历方法。 训练营还提供了每日的讨论知识点,例如在第15天的讨论中,介绍了层序遍历的方法和使用队列来模拟一层一层遍历的效果。在第16天的讨论中,重点讨论了如何进行调试(debug)的方法,认为掌握调试技巧可以帮助学员更好地解决问题和写出正确的算法代码。 总之,代码随想录算法训练营是一个提供优质学习和讨论环境的平台,可以帮助学员系统地学习算法知识,并提供了丰富的讨论内容和刷题建议来提高算法编程能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [代码随想录算法训练营每日精华](https://blog.csdn.net/weixin_38556197/article/details/128462133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值