1.数据读取
这里有一份贷款数据,包括与贷款相关信息,现有主要任务:对贷款人借贷状态(全额借贷、不予借贷)进行分类,从而实现贷款利润最大化。
import pandas as pd
loans_2007 = pd.read_csv('LoanStats3a.csv', skiprows=1)
half_count = len(loans_2007) / 2
#删除空值记录
loans_2007 = loans_2007.dropna(thresh=half_count, axis=1)
#舍弃无关字段
loans_2007 = loans_2007.drop(['desc', 'url'],axis=1)
#将清理的数据集存入新的csv文件中
loans_2007.to_csv('loans_2007.csv', index=False)
import pandas as pd
loans_2007 = pd.read_csv("loans_2007.csv")
print(loans_2007.iloc[0])
print(loans_2007.shape[1])
输出结果显示共有52个字段,其中部分字段为无关字段,应该舍弃。
2.数据清洗及分析
loans_2007 = loans_2007.drop(["id", "member_id", "funded_amnt", "funded_amnt_inv", "grade", "sub_grade", "emp_title", "issue_d"], axis=1)
loans_2007 = loans_2007.drop(["zip_code", "out_prncp", "out_prncp_inv", "total_pymnt", "total_pymnt_inv", "total_rec_prncp"], axis=1)
loans_2007 = loans_2007.drop(["total_rec_int", "total_rec_late_fee", "recoveries", "collection_recovery_fee", "last_pymnt_d", "last_pymnt_amnt"], axis=1)
print(loans_2007.iloc[0])
print(loans_2007.shape[1])
删除无关字段后,剩余32个字段
#统计不同还款状态对应的样本数量——标签类分析
print(loans_2007['loan_status'].value_counts())
统计结果显示,共有9种借贷状态,其中我们仅分析"Fully Paid"(全额借款)和"Charged Off"(不借款)这两种状态。
#筛选出要分类的标签值,其中"Fully Paid"状态值为1,"Charged Off"状态值为0
loans_2007 = loans_2007[(loans_2007['loan_status'] == "Fully Paid") | (loans_2007['loan_status'] == "Charged Off")]
status_replace = {
"loan_status" : {
"Fully Paid": 1,
"Charged Off": 0,
}
}
loans_2007 = loans_2007.replace(status_replace)
在进行数据分析时,部分字段对应的值只有一个,应删除这些无关字段
orig_columns = loans_2007.columns
drop_columns = []
for col in orig_columns:
col_series = loans_2007[col].dropna().unique()
#如果字段值都一样,删除该字段
if len