TIL/전처리, 시각화

전처리 <그룹 내 데이터 최빈값으로 대체하기>

jojoon2786 2024. 7. 28. 01:52

결측치를 채우는 전처리는 해보았는데, null값이 없는 컬럼의 이상치를 그룹 내 최빈값으로 대체하는 과정은 처음이었다.

많이 쓸 것 같아서 기억하려고 가져왔다.

df['연간 소득'] = df['연간 소득'].str.replace('_', '') df['연간 소득'] = df['연간 소득'].astype(float) df['연간 소득'] = df['연간 소득'].astype(int)

 

[연간 소득] 컬럼이 object형이고, '_'가 들어가 있는 이상값이 있어서 언더바를 삭제한 후, int형으로 변환해주었다.

 

from scipy.stats import mode
df['최빈값'] = df.groupby('고객번호')['연간 소득'].transform(lambda x: mode(x)[0])

최빈값을 구하는 함수인 mode()를 쓰기 위해선 scipy.stats 라이브러리에서 mode를 import해주어야 한다.

mode(x) 뒤에 [0]는 최빈값이 여러개인 경우, 리스트를 반환하기 때문이다.

 

[고객번호] 컬럼으로 그룹화 한 후, 각 그룹별 [연간 소득]의 최빈값을 구해 [최빈값] 컬럼에 저장해주었다.

df['연간 소득'] = df['최빈값']
df.drop(columns=['최빈값'], inplace=True)

[최빈값] 컬럼의 값을 [연간 소득] 컬럼으로 옮겨준 후, [최빈값] 컬럼을 삭제해주었다.

튀는 이상치 없이 해결된 모습.

 

^ㅁ^

'TIL > 전처리, 시각화' 카테고리의 다른 글

데이터 전처리 <IQR 이상치 제거>  (1) 2024.07.26
데이터 시각화1  (1) 2024.07.22
데이터 전처리2  (0) 2024.07.19
데이터 전처리1  (0) 2024.07.18