天天看點

資料簡單預處理

本資料集為金融資料,目标任務為預測貸款使用者是否會逾期

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)
           

繼續閱讀