145,POS_CASH_balance.csv,SK_ID_PREV,"ID of previous credit in Home Credit related to loan in our sample. (One loan in our sample can have 0,1,2 or more previous loans in Home Credit)",
우리 샘플에서 대출과 관련된 Home Credit의 이전 신용 거래 ID(0, 1, 2 또는 그 이상의 대출 가능)
len(pos_cash['SK_ID_PREV'].unique()) --> 936325
146,POS_CASH_balance.csv,SK_ID_CURR,ID of loan in our sample,
우리 샘플에서 대출 ID
len(pos_cash['SK_ID_CURR'].unique()) --> 337252
147,POS_CASH_balance.csv,MONTHS_BALANCE,"Month of balance relative to application date (-1 means the information to the freshest monthly snapshot, 0 means the information at application - often it will be the same as -1 as many banks are not updating the information to Credit Bureau regularly )",time only relative to the application
적용일자대비잔액월 (-1은 가장 새로운 월별 스냅숏에 대한 정보를 의미하며, 0은 신청 시 정보를 의미하며, 많은 은행이 정기적으로 신용국에 정보를 업데이트하지 않기 때문에 -1과 동일할 수 있다.)
-10 216441
-11 216023
-9 215558
-12 214716
-8 214149
...
-92 42283
-93 41025
-94 39900
-95 38514
-96 36448
--> mean() 사용
148,POS_CASH_balance.csv,CNT_INSTALMENT,Term of previous credit (can change over time),
이전 신용거래의 기간(시간에 따라 변경될 수 있음) # null값 존재(26071)
['CNT_INSTALMENT'].mean() = 17.09
12.0 2496845
24.0 1517472
10.0 1243449
6.0 1065500
18.0 727394
...
63.0 2
70.0 2
92.0 1
68.0 1
81.0 1
--> mean() 사용
149,POS_CASH_balance.csv,CNT_INSTALMENT_FUTURE,Installments left to pay on the previous credit,
이전 신용거래에서 지불할 남은 할부횟수(금) # null값 존재(26087)
['CNT_INSTALMENT_FUTURE'].mean() = 10.48
0.0 1185960
6.0 614058
4.0 613632
5.0 600295
3.0 582007
...
80.0 1
81.0 1
82.0 1
83.0 1
84.0 1
--> mean() 사용
150,POS_CASH_balance.csv,NAME_CONTRACT_STATUS,Contract status during the month,
월중계약여부
Active 9151119
Completed 744883
Signed 87260
Demand 7065
Returned to the store 5461
Approved 4917
Amortized debt 636
Canceled 15
XNA 2
--> count() 사용
151,POS_CASH_balance.csv,SK_DPD,DPD (days past due) during the month of previous credit,
이전 신용 거래 월의 DPD(만기일 경과일)
0 9706131
1 21872
2 17358
3 14403
4 12350
...
3278 1
3280 1
3282 1
3284 1
4231 1
--> mean() 사용
152,POS_CASH_balance.csv,SK_DPD_DEF,DPD during the month with tolerance (debts with low loan amounts are ignored) of the previous credit,
이전 신용거래의 용인된 (대출 금액이 적은 금액은 무시) 월 중 DPD
0 9887389
1 22134
2 14690
3 11652
4 9528
...
1390 1
1391 1
2410 1
1543 1
3595 1
--> mean() 사용
['SK_ID_PREV']를 기준으로 1차 group-by
prev_pos_cash = pos_cash.groupby(['SK_ID_PREV', 'SK_ID_CURR'], as_index=False)
prev_pos_cash
pos_cash_agg_mean = pos_cash.drop(columns=['SK_ID_CURR']).groupby('SK_ID_PREV', as_index=False).agg('mean').reset_index()
pos_cash_agg_sum = pos_cash.drop(columns=['SK_ID_CURR']).groupby('SK_ID_PREV', as_index=False).agg('sum').reset_index()
print(pos_cash_agg_sum)
['MONTHS_BALANCE'] -> count()
['CNT_INSTALMENT'] -> ['MONTHS_BALANCE']가 max일 때의 값
['CNT_INSTALMET_FUTURE'] -> min()
['NAME_CONTRACT_STATUS'] -> 평균 처리
['SK_DPD', 'SK_DPD_DEF '] -> 평균 처리, 연체 날짜와 연체 일수를 모두 고려하기 위함
columns = ['SK_ID_CURR']
print(pos_cash_agg_mean.keys())
# 변수(원본 데이터프레임의 column name)에 따라 반복문을 실행
# Iterate through the variables names
col_mean = ['MONTHS_BALANCE', 'CNT_INSTALMENT', 'CNT_INSTALMENT_FUTURE', 'SK_DPD', 'SK_DPD_DEF']
col_sum = ['NAME_CONTRACT_STATUS_Active', 'NAME_CONTRACT_STATUS_Amortized debt', 'NAME_CONTRACT_STATUS_Approved',
'NAME_CONTRACT_STATUS_Canceled', 'NAME_CONTRACT_STATUS_Completed', 'NAME_CONTRACT_STATUS_Demand',
'NAME_CONTRACT_STATUS_Returned to the store', 'NAME_CONTRACT_STATUS_Signed', 'NAME_CONTRACT_STATUS_XNA']
for var in pos_cash_agg_mean:
if var != 'SK_ID_CURR':
if var in col_mean:
columns.append(var)
for var in pos_cash_agg_sum:
if var != 'SK_ID_CURR':
if var in col_sum:
columns.append(var)
print(columns)