PART 2 2 風控建模前資料預處理 清洗

2021-09-11 17:38:08 字數 3498 閱讀 5162

最重要的事情開始都會講:建模是始終服務於業務的,沒有業務的評分卡就沒有靈魂

廣義資料預處理包括:資料清洗,資料整合(使用者基礎資料,外部第三方資料,埋點資料),資料變換(woe)型別

4 時間格式

5 中文資料

若干函式用法

1 重複值

duplicated函式用來查詢並顯示資料表中的重複值

duplicated()

drop_duplicates()

2 空值

loandata.isnull()

loandata.notnull()

isnull函式和value_counts函式

loandata.fillna(0)

loandata.dropna()

loandata[『loan_amnt』]=loandata[『loan_amnt』].fillna(loandata[『total_pymnt』]-loandata[『total_rec_int』]).astype(np.int64)

3 空格

檢視資料中的空格

loandata[『loan_status』].value_counts()

去除資料中的空格

loandata[『term』]=loandata[『term』].map(str.strip)

loandata[『term』]=loandata[『term』].map(str.lstrip)

loandata[『term』]=loandata[『term』].map(str.rstrip)

4 大小寫轉換(為全部轉換為大寫,全部轉換為小寫,轉換為首字母大寫)

loandata[『term』]=loandata[『term』].map(str.upper)

loandata[『term』]=loandata[『term』].map(str.lower)

loandata[『term』]=loandata[『term』].map(str.title)

5 關鍵字段內容檢查6 資料中的異常和極端值異常值和極端值的方法是對資料進行描述性統計

loandata.describe().astype(np.int64).t

loandata.replace([100000,36],loandata[『loan_amnt』].mean())

7 更改資料格式

loandata[『loan_amnt』]=loandata[『loan_amnt』].astype(np.int64)

loandata[『issue_d』]=pd.to_datetime(loandata[『issue_d』])

loandata.dtypes 函式檢視字段資料格式

8 資料分組

bins = [0, 5, 10, 15, 20]

group_names = [『a』, 『b』, 『c』, 『d』]

loandata[『categories』] = pd.cut(loandata[『open_acc』], bins, labels=group_names)

9 資料分列

grade_split = pd.dataframe((x.split(』-』) for x in loandata.grade),index=loandata.index,columns=[『grade』,『sub_grade』])

關聯 loandata=pd.merge(loandata,grade_split,right_index=true, left_index=true)

10 檢視資料

data_cr.head()

data_cr.shape #檢視資料集的大小

data_cr.info() # 檢視資料的基本資訊

data_cr.describe().t

msno.matrix(data_cr) # 檢視缺失值情況 import missingno as msno

11 空值百分比計算

a[var1] == -1).sum()/float(len(a)

12 分組的平均值

grouped1 = df[『成交量』].groupby(df[『位置』]).mean()

13 多次分組後的平均值

grouped2 = df[『成交量』].groupby([df[『位置』], df[『賣家』]]).mean()

14 分組後的所有指標(如果可以計算平均值)的平均值

grouped3 = df.groupby([df[『位置』], df[『賣家』]]).mean()

15 dataframe資料分割和合併

df[『銷售額』] = df[『**』] * df[『成交量』] --兩列成績

16 ix,loc,iloc,這裡是直接用運算做分割

df1 = df[30:40][[『位置』, 『賣家』]] --選取 第30-第39行 兩列資料

17 mergeconcat

df3 = pd.merge(df1, df2) --不指定列名,預設選擇列名相同

df4 = pd.merge(df1, df2, on=『賣家』) --選擇乙個列表

df5 = pd.merge(df1, df2, how=『outer』) --外聯接

df6 = pd.merge(df1, df2, how=『left』) --left

左index 右index

df_a = df[:10][[『位置』, 『賣家』]]

df_b = df[3:13][[『**』, 『成交量』]]

df_c_1 = pd.merge(df_a, df_b, left_index=true, right_index=true)

df_c_2 = df_a.join(df_b) --左聯接

df_c_3 = df_b.join(df_a) --右聯接

df8 = df[2:5][[『**』]] # 注意這裡只取乙個列也要用

df9 = df[3:8][[『銷售額』, 『寶貝』]]

df10 = df[6:11][[『賣家』, 『位置』]]

df11 = pd.concat([df10, df9, df8], sort=false) --union all

df12 = pd.concat([df10, df9, df8], axis=1) --列拼接 join

最重要的事情開始都會講:建模是始終服務於業務的,沒有業務的評分卡就沒有靈魂

風控建模整體流程

1.確定建模目的 在信貸領域中建立風控模型是為了找出可能會逾期的客戶,根據逾期的可能性和資金的鬆緊程度選擇是否放貸。在支付領域建立風控模型是為了找出可能存在非法經營的商戶,保證商戶沒有違法經營。2.確定好壞樣本邏輯 在信貸領域中逾期大於x期 不同公司取值不同 的客戶定義為壞客戶 1 從未逾期的客戶定...

python風控建模實戰lendingClub

博主原創錄製 作者toby 持牌照消費金融模型專家,和中科院,中科大教授保持長期專案合作 和同盾,聚信立等外部資料來源公司有專案對接。熟悉消費金融場景業務,線上線下業務,包括現金貸,商品貸,醫美,反欺詐,汽車金融等等。模型專案200 擅長python機器學習建模,對於變數篩選,衍生變數構造,變數缺失...

PART 3 2 風控建模卡方分箱前期資料處理篇

最重要的事情開始都會講 建模是始終服務於業務的,沒有業務的評分卡就沒有靈魂 drop list不滿足條件列表 drop list 對變數單一值進行檢測,比例大於等於0.95,放入不滿足條件列表,最後扔掉 for col in adata.columns percent adata col value...