빅데이터 공부

데이터 클리닝

왕초보코딩러 2023. 11. 29. 16:04
728x90

좋은 데이터의 기준

1. 완결성(Completeness)

필수적인 데이터는 모두 기록되어 있어야 한다.

완결성 충족 방법: 필요한 컬럼들에 결측값이 있는 지 확인한다.

 

2. 유일성(Uniqueness)

동일한 데이터가 중복되면 안된다.

유일성 충족 방법: 중복값 제거한다.

 

3. 통일성(Conformity)

데이터가 동일한 형식으로 저장되어 있어야 한다.

통일성 충족 방법: 데이터 타입, 단위, 포맷 등을 맞춘다

 

4. 정확성(Accuracy)

데이터가 정확해야 한다.

모으는 과정에서 실수로 생김

정확성 충족 방법: 이상점을 처리한다.

 


<완결성을 위한 결측값 처리 방법>

1. 결측값이 있는 행을 제거

df.dropna()

 

2. 결측값이 있는 열을 제거

df.dropna(axis = 'columns')

 

3. 결측값을 대체

- 0으로 대체

df.fillna(0)

 

-평균값으로 대체

df.fillna(df.mean())

 

-중간값으로 대체

df.fillna(df.median())

 

 

dropna와 fillna 모두 inplace = False가 디폴트이다.

기본 데이터프레임을 바꾸고 싶다면 inplace = True를 써줘야 한다.


<유일성을 위한 중복값 처리 방법>

1. 인덱스가 중복되었을 때

인덱스에 중복값이 있는 지 확인

df.index.value_counts()

 

drop_duplicates() 사용 -> 모든 내용이 똑같으면 행을 지운다.

df.drop_duplicates(inplace = True)

 

https://wikidocs.net/154060

 

09-07. 중복행 제거 (drop_duplicates)

####DataFrame.drop_duplicates(subset=None, keep='first', inplace=False, ignore_index=False) ##개요 `d…

wikidocs.net

 

 

2. 컬럼이 중복되었을 때

기존 데이터프레임에서 바뀌지 않기 때문에 다시 정의해 준다.

df = df.T.drop_duplicates().T

 

 

하나씩 설명

1 컬럼과 인덱스를 바꾼다.

df.T

 

2 인덱스로 바뀐 컬럼에서 중복된 것을 삭제

df.T.drop_duplicates()

 

3 인덱스와 컬럼을 다시 바꿔준다.

df.T.drop_duplicates().T

<정확성을 위한 이상값 처리 방법>

IQR 구하기

IQR = Q3(박스플롯의 75% 지점) - Q1(박스플롯의 25% 지점)

Q1 - (1.5 * IQR) 보다 작거나, Q3 + (1.5 * IQR) 보다 크면 -> 이상값

 

박스플롯으로 이상값 보기

df.plot(kind = 'box', y = '컬럼값')

 

IQR

#Q1, Q3 구하는 법
q1 = df['컬럼값'].quantile(0.25)
q1 = df['컬럼값'].quantile(0.75)

#IQR 구하는 법
iqr = q3 - q1

 

조건으로 만들어서 이상값 보기

condition = (df['컬럼값'] < q1 - 1.5 * iqr) | (df['컬럼값'] > q3 + 1.5 * iqr)
df.loc[condition]

 

이상값이 잘못된 데이터라면 -> 고치기 or 제거

이상값이 맞는 데이터라면-> 제거 or 남겨두기

 

 

+두 변수의 관계를 고려해 봤을 때 이상한 데이터 -> 관계적 이상점

산점도 그래프로 두 변수의 관계 확인

df.plot(kind = 'scatter', x = '확인할 변수',  y = '확인할 변수')

 

df.corr()로 상관계수 확인

df.corr()

 

이상값 처리