본문 바로가기

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

 

 

 

 

데이터 불러오기

 

 

 

 

duration(전화통화시간) 컬럼 시각화

 

 

1. 선그래프

 

 

큰 의미를 찾기 힘들다.

 

 

 

 

오름차순으로 정렬하고 인덱스를 초기화해서 다시 그려보자

 

 

 

상위 5% 정도의 데이터와 나머지의 격차가 매우 커 보인다.

 

 

 

 

 

 

2. 히스토그램

 

히스토그램을 그리기 전에 구간 설정에 대한 정보를 얻기 위해

 

describe로 요약본을 살펴보자

 

 

 

최소는 0이고 최대는 4918이다.

 

 

 

 

 

우선 그냥 그려보면

 

이상하므로

 

 

 

 

 

 

이제 구간을 설정해주자

 

 

df['duration'].plot(kind='hist', bins=range(0, 5001, 100))

 

 

 

구간별로 분포가 나오긴 했는데

 

 

뭔가 좀 이상하다.

 

 

 

그 이유는 describe에서 찾을 수 있다.

 

 

 

평균도 258이고 3사분위수도 기껏해야 319인데

 

 

최대값이 4918이다.

 

 

이는 아웃라이어들이 있다는 뜻이다.

 

 

 

 

duration 컬럼의 아웃라이어 인덱스 찾기

 

이상치 찾는 방법은 아래 포스팅 참조

https://steadiness-193.tistory.com/78

 

판다스 - 특잇값(outlier) 찾아내기 : Tukey Fences, Z-score

https://steadiness-193.tistory.com/68 판다스 - 특잇값(outlier) 처리하기 데이터프레임을 다루다보면 여러 아웃라이어들을 볼 수 있다. 이 값들은 가치가 있을 수 있지만 때로는 제외하고 처리해야할 때가

steadiness-193.tistory.com

 

 

 

표준점수가 3점 초과인 데이터의 인덱스를 찾으면

 

 

 

 

총 861개의 데이터가 나온다.

 

 

 

 

 

위 코드를 통해 만든 result를 이용해

 

 

아웃라이어들의 describe를 보면

 

 

최소 1037부터 최대 4918의 값을 가진다.

 

 

 

 

위 861개의 데이터를 제외하고 히스토그램을 다시 그려보자

 

 

df['duration'].drop(outliers).plot(kind='hist', bins=range(0, 1101, 100))

 

 

 

 

100에서 200대의 데이터가 가장 많은 것을 볼 수 있고

 

그 이후의 시간이 늘어날수록 분포가 적어진다.

 

 

반응형