本学习笔记为阿里云天池龙珠计划金融风控训练营的学习内容,学习链接为: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()
- describe()
可以查看数据的基本情况,包括:count 非空值数、mean 平均值、std 标准差、max 最大值、min 最小值、(25%、50%、75%)分位数等。
data_train.describe()
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这一part接触到了很多新的知识,比如pandas中的.value_counts()、pandas_profiling,以及对可视化有初步的认识。大概了解了一下它们的用法,试着在天池里运行。
pandas_profiling一键生成数据分析报告,真的是很厉害的操作,感觉可以节省很大工夫。
总的来说,小白仍需继续努力,努力看懂,加油!