数学建模社区-数学中国

标题: 金融风控训练营task2-赛题理解学习笔记 [打印本页]

作者: 1440359316    时间: 2021-5-28 17:44
标题: 金融风控训练营task2-赛题理解学习笔记
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')
1
2
3
4
5
6
7
2. 读取文件
2.1 拓展知识
pandas读取数据时相对路径载入报错时,尝试使用os.getcwd()查看当前工作目录。

SV与CSV的区别:

SV是用制表符(Tab,’\t’)作为字段值的分隔符;CSV是用半角逗号(’,’)作为字段值的分隔符
读取文件的部分

通过nrows参数,来设置读取文件的前多少行(不包括列名),nrows是一个大于等于0的整数。
pd.read_csc("train.csv",nrows=5)

分块读取

read_csv 和 read_table 有一个 chunksize 参数,用以指定一个块大小(每次读取多少行),返回一个可迭代的 TextFileReader 对象。
#设置chunksize参数,来控制每次迭代数据的大小
i = 0  # 控制输出
chunker = pd.read_csv("train.csv",chunksize=5)
for item in chunker:
print(type(item))
#<class 'pandas.core.frame.DataFrame'>
print(len(item))
i+=1
if i >= 4:   # 由于数据量过大,限制输出4条就跳出循环
    break
#5
>>>
<class 'pandas.core.frame.DataFrame'>
5
<class 'pandas.core.frame.DataFrame'>
5
<class 'pandas.core.frame.DataFrame'>
5
<class 'pandas.core.frame.DataFrame'>
5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
3. 基本常用函数
3.1 查看数据集的样本个数和原始特征维度
describe默认统计数值型数据的各个(特征)统计量 : data_train.describe()
append将截取得数据拼在一起 : data_train.head(3).append(data_train.tail(3))
3.2 查看数据集中特征缺失值,唯一值等
3.2.1 查看缺失值

print(f'There are {data_train.isnull().any().sum()} columns in train dataset with missing values.')
>>> There are 22 columns in train dataset with missing values.
#上面得到训练集有22列特征有缺失值
1
2
3
df.isnull() 是元素级别的判断,可以用来查看每个单元格是否缺失(与sina()没有区别),isnull生成的是所有数据的true/false矩阵
isnull().any(),是列级别的判断,只要该列有为空或者NA的元素,就为True,否则False
使用all就是全部非缺失值,如果是any就是至少有一个不是缺失值
isnull().sum(),将列中为空的个数统计出来
3.2.2 进一步查看缺失特征中缺失率大于50%的特征

have_null_fea_dict = (data_train.isnull().sum()/len(data_train)).to_dict()
fea_null_moreThanHalf = {}
#生成列名为key其缺失率为value的字典,包括缺失率为0的列
for key,value in have_null_fea_dict.items():
    if value > 0.5:
        fea_null_moreThanHalf[key] = value

fea_null_moreThanHalf
>>> {}
1
2
3
4
5
6
7
8
9
3.2.3 具体的查看缺失特征及缺失率

# nan可视化
missing = data_train.isnull().sum()/len(data_train)
#同样返回所有列名及其缺失值但不是字典
missing = missing[missing > 0]
#去掉没有数据缺失的
missing.sort_values(inplace=True)
#排序
missing.plot.bar()
#画出柱状图
1
2
3
4
5
6
7
8
9

默认缺失的值类型全为np.nan,上面的示例帮助我们总想了解哪些列存在“nan”,并且可以把nan的个数打印。若nan个数很多则可以考虑将这一列删除。
此外,我们可以进行横向比较,某些样本数据的大部分列是缺失的,且在样本足够的情况下可以考虑将其删除
【补充】

inplace参数:作用为 是否在原对象基础上进行修改

inplace = True:不创建新的对象,直接对原始对象进行修改;
inplace = False:对数据进行修改,创建并返回新的对象承载其修改结果,原对象不变
默认是false
inplace的值只有这两个
画图

figsize=() 用来表示figure 的大小为宽、长(单位为inch)
直方图hist
hist函数:查看df中所有值列的直方图
plot函数:df[‘col’].plot(kind = ‘hist’);
柱状图 bar / 横向 barh
df[‘col’].value_counts().plot(kind = ‘bar’);
value_counts()是按数量多少排序的
饼状图 pie
df[‘col’].value_counts().plot(kind = ‘pie’, figsize = (8,8));
散点图 scatter
一整个df的:pd.plotting.scatter_matrix(df, figsize=(15,15)); 该函数还会展示每个变量的直方图
单独的散点图:df.plot(x = ‘col1’, y = ‘col2’, kind = ‘scatter’);
箱线图 box
3.2.4 查看训练集测试集中特征属性只有一值的特征

one_value_fea = [col for col in data_train.columns if data_train[col].nunique() <= 1]
one_value_fea_test = [col for col in data_test_a.columns if data_test_a[col].nunique() <= 1]
# one_value_fea,one_value_fea_test 返回的值都是['policyCode'],所以这一列参考价值不大,可去掉
————————————————
版权声明:本文为CSDN博主「颯沓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_52037667/article/details/116171991







欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5