金融风控-Task2学习笔记

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

一、学习知识点概要

  • 读取文件
  • 数据总体了解
  • 缺失值和唯一值
  • 深入数据
  • pandas_profiling生成数据报告

二、学习内容

1、读取文件

读取整个文件

#读取整个train.csv文件
data_train = pd.read_csv('train.csv')

读取文件的部分

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

2、数据总体了解

  • 通过info()来熟悉数据类型
#显示所有信息,可以读取到所有的数据类型
data_train.info()

金融风控-Task2学习笔记

  • describe()
    可以查看数据的基本情况,包括:count 非空值数、mean 平均值、std 标准差、max 最大值、min 最小值、(25%、50%、75%)分位数等。
data_train.describe()

金融风控-Task2学习笔记

3、缺失值和唯一值

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

使用isnull()函数来识别数据框中的缺失值

使用sum()函数可获取每列所有缺失值的总和。

使用sort_values(ascending = False)函数以降序获取缺少值的列。

用len(df)除以得到每一列中丢失值的%。

#查看缺失值
print(f'There are {data_train.isnull().any().sum()} columns in train dataset with missing values.')
#查看唯一值
print(f'There are {len(one_value_fea)} columns in train dataset with one unique value.')
print(f'There are {len(one_value_fea_test)} columns in test dataset with one unique value.')
  • 具体的查看缺失特征及缺失率
# nan可视化
missing = data_train.isnull().sum()/len(data_train)
missing = missing[missing > 0]
missing.sort_values(inplace=True)
missing.plot.bar()

4、深入数据

  • 类别型特征有时具有非数值关系,有时也具有数值关系。比如‘grade’中的等级A,B,C等,是否只是单纯的分类,还是A优于其他要结合业务判断。
  • 数值型特征本是可以直接入模的,但往往风控人员要对其做分箱,转化为WOE编码进而做标准评分卡等操作。从模型效果上来看,特征分箱主要是为了降低变量的复杂性,减少变量噪音对模型的影响,提高自变量和因变量的相关度。从而使模型更加稳定。
  • value_counts( )
    在pandas中常用于数据表的计数及排序,它可以用来查看数据表中,指定列里有多少个不同的数据值,并计算每个不同值有在该列中的个数,同时还能根据需要进行排序。
  • 划分数值型变量中的连续变量和离散型变量
#过滤数值型类别特征
def get_numerical_serial_fea(data,feas):
   numerical_serial_fea = []
   numerical_noserial_fea = []
   for fea in feas:
       temp = data[fea].nunique()
       if temp <= 10:
           numerical_noserial_fea.append(fea)
           continue
       numerical_serial_fea.append(fea)
   return numerical_serial_fea,numerical_noserial_fea
numerical_serial_fea,numerical_noserial_fea = get_numerical_serial_fea(data_train,numerical_fea)
  • 数值类别型变量分析
data_train['term'].value_counts()#离散型变量
  • 数值连续型变量分析
#每个数字特征得分布可视化
f = pd.melt(data_train, value_vars=numerical_serial_fea)
g = sns.FacetGrid(f, col="variable",  col_wrap=2, sharex=False, sharey=False)
g = g.map(sns.distplot, "value")
  • 非数值类别型变量分析
data_train['grade'].value_counts()

5、pandas_profiling生成数据报告

import pandas_profiling
pfr = pandas_profiling.ProfileReport(data_train)
pfr.to_file("./example.html")
  • pandas-profiling为我们提供了四种缺失值展现形式
    金融风控-Task2学习笔记

三、学习问题与解答

金融风控-Task2学习笔记金融风控-Task2学习笔记

经常忘记要先定义

四、学习思考与总结

在task2这一part接触到了很多新的知识,比如pandas中的.value_counts()、pandas_profiling,以及对可视化有初步的认识。大概了解了一下它们的用法,试着在天池里运行。
pandas_profiling一键生成数据分析报告,真的是很厉害的操作,感觉可以节省很大工夫。
总的来说,小白仍需继续努力,努力看懂,加油!

上一篇:仿真小白必须知道的!有限元法-它是什么?FEM和FEA解释


下一篇:2021-04-25