本資料集為金融資料,目标任務為預測貸款使用者是否會逾期
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)