数据分析之特征工程

2020-09-18  本文已影响0人  ShowMeCoding

1 数据总体了解

读取数据集并了解数据集大小,原始特征维度; 通过info熟悉数据类型; 粗略查看数据集中各特征基本统计量;

# 1 查看数据集的原始特征维度
data_train.shape

# 2 查看数据集特征的个数、类型
data_train.info()

# 3 查看每个特征的基本统计量,包括特征样本数,中位数,标准差,极值等
data_train,describe()

# 4 查看数据集前几行,默认前5行
data_train.head()

2 缺失值和唯一值

查看数据缺失值情况,查看唯一值特征情况

# 1 查看样本的缺失率
miss = data_train.isnull().sum()/len(data_train)

缺失值处理方法:

# 1 查找特征属性只有一值的特征
one_value_fea = [col for col in data_train.columns if data_train[col].nunique() <= 1]

3 深入数据-查看数据类型

# 1 分离出数值型特征
numerical_fea = list(data_train.select_dtypes(exclude=['object']).columns)

# 2 分离出类别型特征
category_fea = list(filter(lambda x: x not in numerical_fea,list(data_train.columns)))

# 3 过滤数值型类别特征
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)

例如将特征loanAmnt 进行log处理

#Ploting Transaction Amount Values Distribution
plt.figure(figsize=(16,12))
plt.suptitle('Transaction Values Distribution', fontsize=22)
plt.subplot(221)
sub_plot_1 = sns.distplot(data_train['loanAmnt'])
sub_plot_1.set_title("loanAmnt Distribuition", fontsize=18)
sub_plot_1.set_xlabel("")
sub_plot_1.set_ylabel("Probability", fontsize=15)

plt.subplot(222)
sub_plot_2 = sns.distplot(np.log(data_train['loanAmnt']))
sub_plot_2.set_title("loanAmnt (Log) Distribuition", fontsize=18)
sub_plot_2.set_xlabel("")
sub_plot_2.set_ylabel("Probability", fontsize=15)

4 数据间相关关系

特征和特征之间关系 特征和目标变量之间关系

#透视图 索引可以有多个,“columns(列)”是可选的,聚合函数aggfunc最后是被应用到了变量“values”中你所列举的项目上。
pivot = pd.pivot_table(data_train, index=['grade'], columns=['issueDateDT'], values=['loanAmnt'], aggfunc=np.sum)
pivot

5 用pandas_profiling生成数据报告

import pandas_profiling

pfr = pandas_profiling.ProfileReport(data_train)
pfr.to_file("./example.html")
上一篇 下一篇

猜你喜欢

热点阅读