本数据集为金融数据,目标任务为预测贷款用户是否会逾期
1、导入数据
import pandas as pd
import numpy as np
data=open("./data.csv")
data = pd.read_csv(data)
2、查看前五列的数据以及数据的基本信息
print(data.head())
print(data.info())
3、删除无关的特征
根据数据任务,我们将id,name,no等相关的特征删除掉
data1 = data.drop(['trade_no', 'bank_card_no', 'source', 'Unnamed: 0', 'id_name'], axis=1)
data1.info()
4、统计特征缺失值个数
print(data1.isnull().sum())
count=0
for i in range(85):
if data1.isnull().sum()[i]>250:
count=count+1
print(count)
print(max(data1.isnull().sum()))
我们统计了各个特征的数据缺失值个数,发现缺失值大于250的有44个,同时最大缺失值的特征为student_feature,缺失值达到了2998。因此我们先将student_feature特征剔除
5、剔除无效样本与特征
data1=data1.drop(['student_feature'], axis=1)
data1.dropna(thresh=70, inplace = True)
我们将一个样本中有15个特征缺失值的定为无效样本,并将其剔除
6、缺失值填充
通过之前的查看数据信息,发现数据的格式存在三种,我们将object类型数据取出分别处理不同类型之间的缺失值。
data_col=['loans_latest_time', 'latest_query_time', 'reg_preference_for_trad']
data2 = data1[data_col]
data3 = data1.drop(data_col, axis=1)
data3=data3.fillna(data3.mode())
reg_data=data2['reg_preference_for_trad']
data2.drop(['reg_preference_for_trad'], axis=1)
from sklearn import preprocessing
CityData = preprocessing.LabelBinarizer().fit_transform(reg_data)
CityDataFrame = pd.DataFrame(CityData, columns=["一线城市","三线城市","二线城市","其它城市","境外"])
我们使用样本每列数据的众数来填充缺失值,也可以使用平均数等。这两种方法为处理缺失值的常用方法
7、合并数据
对上述处理后的数据进行合并
data3.reset_index(drop=True, inplace=True)
data2.reset_index(drop=True, inplace=True)
CityDataFrame.reset_index(drop=True, inplace=True)
dataSet = pd.concat([data2, CityDataFrame, data3], axis=1)
8、将数据集切分为训练集与测试集
对数据集切分为训练集与测试集切分的比例为7:3,随机因子为2018
train, test = train_test_split(dataSet, test_size=0.3, random_state=2018)