(头歌)【基础】数据清洗与转换——金融欺诈数据处理
sklearn.preprocessing.OrdinalEncode可以用于常规的转码,调用其fit_transform(),即可完成数据的转码,并返回numpy数组类型的转换结果。scikit-learn含有多种数据规范化工具,例如sklearn.preprocessing的StandardScaler,可以将数据规范化为均值为0,方差为1。最常规的数据编码方式为,将有限个符号转码为0,1,2
任务描述
探索一个金融信贷数据,填充缺失值,并对数据进行合理的变换。 该数据已经做了脱敏处理,字段“A16”为类别标签,0表示未欺诈,1表示欺诈。
相关知识
- 填充缺失值:
基本策略包括,将缺失值填充为0,1,最大值,最小值,平均值,中位数,或者概率最大的,即众数。
- 数据编码:
最常规的数据编码方式为,将有限个符号转码为0,1,2,等数值。 还可以采用onehot编码,或者用其他工具进行转码。
- 数据规范化:
scikit-learn含有多种数据规范化工具,例如sklearn.preprocessing的StandardScaler,可以将数据规范化为均值为0,方差为1。
编码提示
sklearn.preprocessing.OrdinalEncode可以用于常规的转码,调用其fit_transform(),即可完成数据的转码,并返回numpy数组类型的转换结果。 注意:该方法默认会对所有的数据类型重新编码,包括原数值型,建议调用该方法时,只提取非数值型的字段进行编码。
编程要求
根据代码提示,补全需要的代码:
- 查看数据字段的基本信息
预期的结果为:
- 查看各个数值型字段的描述信息
预期的结果为:
- 提取有空缺值的字段,并打印各字段的空缺值数量
预期的结果为:
- 填充缺失值的数据,
- 转码非数值型数据
测试说明
平台将根据最后的运行结果进行评测。 注意: (1)评测前,请注释题目未要求的所有print()语句,保留题目明确要求“打印”的语句; (2)请点击Jupyter的“保存”按钮,保存代码。 预期的结果为:

实验结果:
# -*-encoding:utf-8 -*-
# import package.
import numpy as np
import pandas as pd
from sklearn.preprocessing import OrdinalEncoder
import warnings
warnings.filterwarnings('ignore')
data_ori = pd.read_csv('/data/bigfiles/bankloan.csv')
data_ori.head()
# 用info()方法查看数据字段的基本信息,即各字段的数据类型、非空数据的数量
data_ori.info()
# describe()数值型字段的描述信息
data_ori.describe()
#提取有空缺值的字段,并打印各字段的空缺值数量
t = data_ori.isnull().sum()
print(t[t>0])
data_ori['A1'].value_counts()
data_ori['A1'].unique()
#按概率最大填充
data_ori['A1'].fillna('b', inplace=True)
# 选取概率最大的值,填充其他字段的空缺值、
data_ori['A4'].value_counts()
data_ori['A4'].fillna('u', inplace=True)
data_ori['A5'].value_counts()
data_ori['A5'].fillna('g', inplace=True)
data_ori['A6'].value_counts()
data_ori['A6'].fillna('c', inplace=True)
data_ori['A7'].value_counts()
data_ori['A7'].fillna('v', inplace=True)
#筛选所有非数值型的字段
cols = [col for col in data_ori.select_dtypes(include=['object']).columns]
cols
#for col in cols:
# print (col, '->', data_ori[col].unique())
# 将这些筛选出的非数值型字段,转码为数值,例如{'a':0, 'b':1},并修改data_ori中对应列的值
enc=OrdinalEncoder()
new = enc.fit_transform(data_ori[cols])
data_ori[cols] = new
print(data_ori.iloc[:,:6].describe())
更多推荐

所有评论(0)