본문 바로가기

Pandas/실전

판다스 - 대출이 있다면 은행상품에 잘 가입하지 않을까?

반응형

데이터 출처

UCI Machine Learning Repository

Moro, S., Cortez, P., & Rita, P. (2014). A data-driven approach to predict the success of bank telemarketing. Decision Support Systems, 62, 22-31

 

 

 

데이터 불러오기

 

 

 

위 데이터의 y컬럼을 살펴보면

 

 

no와 yes로 구성되어있다.

 

yes 은행 상품 가입
no 은행 상품 미가입

 

 

 

loan(대출) 컬럼

 

 

yes 대출이 있는 상태
no 대출하지 않음
unknown 확인할 수 없음

 

 

 

 

 

도식으로 정리해보면

 

 

 

 

 

찾아야하는 데이터는

 

가입여부에 따라 / 대출을 받은 사람들의 비율인 것이다.

 

 

 

 

 

가입여부에 따라 

 

y컬럼의 값에 따라 그룹핑

 

 

 

 

get_group을 이용해

 

yes_group과 no_group을 변수명으로, 두개의 데이터프레임을 얻어보자

 

 

 

yes_group (4640행)

 

 

 

no_group (36548행)

 

 

 

여기서 두가지 방법으로 비율을 찾을 수 있다.

 

 

 

대출을 받은 사람들의 비율

 

 

첫번째 방법. value_counts()이용

 

 

 

yes_group의 loan컬럼의 values_counts()의 결과를

yes_group_loan_status로 정의

 

 

no_group의 loan컬럼의 values_counts()의 결과를

no_group_loan_status로 정의

 

 

 

 

 

단, 절대적인 값으로는 수치를 비교하기 어려우니

 

각 시리즈를 각 시리즈의 합으로 나눠보자

 

 

 

이제 찾고자 했던 그룹별 대출비율이 나왔다.

 

 

 

이를 concat으로 연결하면 되는데 그전에

 

시리즈의 이름이 loan으로 동일하므로

 

이름을 바꾼뒤 concat을 진행하자

 

 

 

마지막으로 인덱스의 이름도 no, yes로 헷갈리니 loan으로 설정하면

 

 

 

한눈에 보기 편한 데이터프레임을 만들 수 있다.

 

 

 

 

 

 

 

두번째 방법. groupby 이용

 

 

 

위에서 만든 yes_group과 no_group을 

 

 

다시 loan 컬럼 기준으로 그룹핑해서

 

 

size로 행의 개수를 구한다.

 

 

그러면 위에서 구했던 value_counts와 같은 값이 나온다.

 

 

 

 

 

동일하게 각 그룹의 size() 값을 size().sum()으로 나눠준다.

 

 

 

 

이를 다시 concat을 해주고 컬럼명을 넣어주면 완성된다.

 

 

 

 

 

 

 

 

결과 해석

 

대출이 있다면 은행상품에 가입을 덜 한다고 볼 수 있지만,

 

대출이 있는 사람이 은행 상품에 가입하는 비율과

 

대출이 있는 사람이 은행 상품에 가입하지 않는 비율은

 

약 0.005정도만 차이 난다.

 

유의한 차이가 있다고는 보기 어려운 수치다.

반응형