您当前的位置: 首页 >  数据分析

静静喜欢大白

暂无认证

  • 1浏览

    0关注

    521博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【day2-数据分析】

静静喜欢大白 发布时间:2020-09-18 21:41:41 ,浏览量:1

目录

 

1.比赛相关情况

1.1简介

1.2 学习目标

1.3 学习内容详细介绍

2.官方代码示例

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

2.2读取文件

2.3总体了解

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

2.5查看特征的数值类型有哪些,对象类型有哪些

2.6变量分布可视化

2.7时间格式数据处理及查看

2.8掌握透视图可以让我们更好的了解数据

2.9用pandas_profiling生成数据报告

3.总结

1.比赛相关情况 1.1简介

赛题:零基础入门数据挖掘 - 零基础入门金融风控之贷款违约

目的:了解数据,熟悉数据,为后续的特征工程做准备

  1. EDA价值主要在于熟悉了解整个数据集的基本情况(缺失值,异常值),对数据集进行验证是否可以进行接下来的机器学习或者深度学习建模.
  2. 了解变量间的相互关系、变量与预测值之间的存在关系。
  3. 为特征工程做准备

项目地址:https://github.com/datawhalechina/team-learning-data-mining/tree/master/FinancialRiskControl

比赛地址:https://tianchi.aliyun.com/competition/entrance/531830/introduction

1.2 学习目标
  1. 学习如何对数据集整体概况进行分析,包括数据集的基本情况(缺失值,异常值)
  2. 学习了解变量间的相互关系、变量与预测值之间的存在关系
  3. 完成相应学习打卡任务
1.3 学习内容详细介绍

数据总体了解:

读取数据集并了解数据集大小,原始特征维度;

通过info熟悉数据类型;

粗略查看数据集中各特征基本统计量;

缺失值和唯一值:

查看数据缺失值情况

查看唯一值特征情况

深入数据-查看数据类型

类别型数据

数值型数据

离散数值型数据

连续数值型数据

数据间相关关系

特征和特征之间关系

特征和目标变量之间关系

用pandas_profiling生成数据报告

2.官方代码示例 2.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')

【发现:需要额外安装seaborn】

2.2读取文件
#data_train = pd.read_csv('./train.csv')#数据直接在项目路径下,也就是和本.py文件同路径

#data_test_a = pd.read_csv('./testA.csv')

#data_train_sample = pd.read_csv("./train.csv",nrows=5)

data_train = pd.read_csv('finance/train.csv')#数据是在项目路径下的一个finance文件下

data_test_a = pd.read_csv('finance/testA.csv')

data_train_sample = pd.read_csv("finance/train.csv",nrows=5)#通过nrows参数,来设置读取文件的前多少行,nrows是一个大于等于0的整数。

'''

##设置chunksize参数,来控制每次迭代数据的大小

chunker = pd.read_csv("finance/train.csv",chunksize=5)

for item in chunker:

    print(type(item))

    #

    print(len(item))

    #5

'''
2.3总体了解

查看一下具体的列名,day1-赛题理解部分已经给出具体的特征含义,这里方便阅读再给一下:

  1. id 为贷款清单分配的唯一信用证标识
  2. loanAmnt 贷款金额
  3. term 贷款期限(year)
  4. interestRate 贷款利率
  5. installment 分期付款金额
  6. grade 贷款等级
  7. subGrade 贷款等级之子级
  8. employmentTitle 就业职称
  9. employmentLength 就业年限(年)
  10. homeOwnership 借款人在登记时提供的房屋所有权状况
  11. annualIncome 年收入
  12. verificationStatus 验证状态
  13. issueDate 贷款发放的月份
  14. purpose 借款人在贷款申请时的贷款用途类别
  15. postCode 借款人在贷款申请中提供的邮政编码的前3位数字
  16. regionCode 地区编码
  17. dti 债务收入比
  18. delinquency_2years 借款人过去2年信用档案中逾期30天以上的违约事件数
  19. ficoRangeLow 借款人在贷款发放时的fico所属的下限范围
  20. ficoRangeHigh 借款人在贷款发放时的fico所属的上限范围
  21. openAcc 借款人信用档案中未结信用额度的数量
  22. pubRec 贬损公共记录的数量
  23. pubRecBankruptcies 公开记录清除的数量
  24. revolBal 信贷周转余额合计
  25. revolUtil 循环额度利用率,或借款人使用的相对于所有可用循环信贷的信贷金额
  26. totalAcc 借款人信用档案中当前的信用额度总数
  27. initialListStatus 贷款的初始列表状态
  28. applicationType 表明贷款是个人申请还是与两个共同借款人的联合申请
  29. earliesCreditLine 借款人最早报告的信用额度开立的月份
  30. title 借款人提供的贷款名称
  31. policyCode 公开可用的策略_代码=1新产品不公开可用的策略_代码=2
  32. n系列匿名特征 匿名特征n0-n14,为一些贷款人行为计数特征的处理

【额外信息查看】

#---数据的总体了解

print(data_test_a.shape)

print(data_train.shape)

print(data_train.columns)

#通过info()来熟悉数据类型

print(data_train.info())



#总体粗略的查看数据集各个特征的一些基本统计量

#data_train.describe()

des = data_train.describe(include='all')# include='all',代表对所有列进行统计,如果不加这个参数,则只对数值列进行统计

print(des)

#查看前3行和后3行的情况

print(data_train.head(3).append(data_train.tail(3)))

【describe在pycharm中没有输出结果】

       【解决】猜测既有数字,也有字母。因此,添加属性include='all'即可

              describe()方法一般用于对数据进行统计学估计,输出行名分别为:count(行数),mean(平均值),std(标准差),min(最小值),25%(第一四分位数),50%(第二四分位数),75%(第三四分位数),max(最大值)。

              参考:https://blog.csdn.net/qq_24754061/article/details/103738513

 

 

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

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



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

have_null_fea_dict = (data_train.isnull().sum()/len(data_train)).to_dict()

fea_null_moreThanHalf = {}

for key,value in have_null_fea_dict.items():

    if value > 0.5:

        fea_null_moreThanHalf[key] = value

print(fea_null_moreThanHalf)



#nan可视化,具体的查看缺失特征及缺失率

missing = data_train.isnull().sum()/len(data_train)

missing = missing[missing > 0]

missing.sort_values(inplace=True)

missing.plot.bar()

plt.show()

【遇到问题:plot.bar画柱状图时不显示】

       解决:在最后输入plt.show()

【目的】

纵向了解哪些列存在 “nan”, 并可以把nan的个数打印,主要的目的在于查看某一列nan存在的个数是否真的很大,如果nan存在的过多,说明这一列对label的影响几乎不起作用了,可以考虑删掉。如果缺失值很小一般可以选择填充。

另外可以横向比较,如果在数据集中,某些样本数据的大部分列都是缺失的且样本足够的情况下可以考虑删除。

Tips: 比赛大杀器lgb模型可以自动处理缺失值,Task4模型会具体学习模型了解模型哦!

 

#查看训练集测试集中特征属性只有一值的特征

one_value_fea = [col for col in data_train.columns if data_train[col].nunique()             
关注
打赏
1510642601
查看更多评论
0.0380s