
중복 데이터처리
데이터프레임에서 각 행은 분석 대상이 갖고 있는 모든 속성(변수)에 대한 관측값(레코드)을 뜻한다.
하나의 데이터셋에서 동일한 곽측값이 2개 이상 중복되는 경우 중복 데이터를 찾아서 삭제해야한다.
동일한 대상이 중복으로 존재하는 것이므로 분석 결과를 왜곡하기 때문이다.
1. 중복 데이터 확인 - duplicated()
동일한 관측값이 중복되는지 여부, 즉 행의 레코드가 중복되는지 여부를 확인하기 위해 duplicated() 메소드를 이용한다.
전에 나온 행들과 비교하여 중복되는 행이면 True가 나오고, 처음 나오는 행이라면 False를 반환해준다.
# 판다스 불러오기
import pandas as pd
# 중복 데이터를 갖는 데이터프레임 만들기
df = pd.DataFrame({'c1' : ['a', 'a', 'b', 'a', 'b'],
'c2' : [1, 1, 1, 2, 2],
'c3' : [1, 1, 2, 2, 2]})
df
c1 | c2 | c3 | |
---|---|---|---|
0 | a | 1 | 1 |
1 | a | 1 | 1 |
2 | b | 1 | 2 |
3 | a | 2 | 2 |
4 | b | 2 | 2 |
① 데이터프레임 전체 행 데이터 중에서 중복값 찾기
df_dup = df.duplicated()
df_dup
0 False
1 True
2 False
3 False
4 False
dtype: bool
0행 데이터는 뒤에 나오는 1행의 데이터와 같지만, 처음 나오는 값이다.
즉, 앞에 비교할 데이터가 아예 없기 때문에 중복이 아니라는 뜻에서 False가 나온다.
1행의 데이터는 앞의 0행과 중복되기 때문에 True가 된다.
② 데이터프레임의 특정 열 데이터에서 중복값 찾기
# 데이터 확인
df
c1 | c2 | c3 | |
---|---|---|---|
0 | a | 1 | 1 |
1 | a | 1 | 1 |
2 | b | 1 | 2 |
3 | a | 2 | 2 |
4 | b | 2 | 2 |
col_dup = df['c2'].duplicated()
col_dup
0 False
1 True
2 True
3 False
4 True
Name: c2, dtype: bool
2. 중복데이터 제거 - drop_duplicates()
중복 데이터를 제거하는 명령에는 drop_duplicates() 메소드가 있다.
중복되는 행을 제거하고 고유한 관측값을 가진 행들만 남겨준다.
원본 객체를 변경하기 위해선 inplace=True
옵션을 추가해줘야 한다.
# df 데이터 테이블 불러오기
df
c1 | c2 | c3 | |
---|---|---|---|
0 | a | 1 | 1 |
1 | a | 1 | 1 |
2 | b | 1 | 2 |
3 | a | 2 | 2 |
4 | b | 2 | 2 |
① 데이터프레임에서 중복 행 제거
df2 = df.drop_duplicates()
df2
c1 | c2 | c3 | |
---|---|---|---|
0 | a | 1 | 1 |
2 | b | 1 | 2 |
3 | a | 2 | 2 |
4 | b | 2 | 2 |
→ 1행의 데이터는 앞에 이웃하고 있는 0행의 데이터와 중복되므로 제거가 된다.
② c2, c3 열 기준으로 중복 행 제거
subset 옵션에 '열 이름의 리스트'를 전달할 수 있다. 데이터의 중복 여부를 판별할때, subset 옵션에 해당하는 열을 기준으로 판단한다.
df3 = df.drop_duplicates(subset=['c2', 'c3'])
df3
c1 | c2 | c3 | |
---|---|---|---|
0 | a | 1 | 1 |
2 | b | 1 | 2 |
3 | a | 2 | 2 |
→ 데이터프레임 df와 'c2, 'c3' 열을 기준으로 판멸하면 0행과 1행, 3행과 3행의 데이터가 각각 중복되낟. 0행과 3행은 처음 나타난 데이터라서 제외하고, 1행과 4행의 데이터만 중복으로 판별되어 삭제된다.
'파이썬 > Pandas' 카테고리의 다른 글
판다스 데이터 전처리 - 데이터프레임 함수매핑: apply(), applymap(), lambda (0) | 2022.11.15 |
---|---|
판다스 데이터 표준화, 자료형 변환, 더미변수 (1) | 2022.11.13 |
판다스 pandas 데이터 전처리 - 누락데이터(NaN) 처리 (0) | 2022.11.12 |
판다스 pandas - 통계함수 (평균,최대,최소,중간,표준편차,상관계수) (0) | 2022.11.11 |
판다스 Pandas 데이터프레임 구조 - 미리보기, 살펴보기 (0) | 2022.11.10 |
댓글