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)
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()
이상값 처리
'빅데이터 공부' 카테고리의 다른 글
비지도학습-클러스터링 (0) | 2024.01.08 |
---|---|
[빅데이터분석기사 실기] 제2유형 (1) | 2023.12.18 |
판다스 기본 제공 메소드로 시각화하기 (2) | 2023.11.23 |
DataFrame 다루기 (1) | 2023.10.26 |
Pandas DataFrame의 데이터 전처리 (0) | 2023.07.12 |