[데이터 사전 처리/중복 데이터 처리]

2022. 12. 2. 12:59

데이터프레임에서 각 행은 분석 대상이 갖고 있는 모든 속성(변수)에 대한 관측값(레코드)을 뜻한다.

하나의 데이터셋에서 동일한 관측값이 2개 이상 중복되는 경우 중복 데이터를 찾아서 삭제해야 한다.

동일한 대상이 중복으로 존재하는 것이므로 분석 결과를 왜곡하기 때문이다.

 

 

목차

 

1. 중복 데이터 확인

2. 중복 데이터 제거


중복 데이터 확인

 

행의 레코드가 중복되는지 여부를 확인하려면 duplicated() 메소드를 이용한다.

전에 나온 행들과 비교하여 중복되는 행이면 True를 반환하고, 처음 나오는 행에 대해서는 False를 반환한다.

 

# 예제 5-6(1)

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]})
print(df)
print('\n')

df_dup = df.duplicated()
print(df_dup)
print('\n')

데이터프레임에 duplicated() 메소드를 적용하면 각 행의 중복 여부를 나타내는 불린 시리즈를 반환한다.

 

예제 5-6(1) 출력 결과

1행의 데이터가 0행과 중복되기 때문에 True가 된다.

 

# 예제 5-6(2)

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]})

col_dup = df['c2'].duplicated()
print(col_dup)

데이터프레임의 열은 시리즈 객체이므로, duplicated() 메소드를 적용할 수 있다.

 

예제 5-6(2) 출력 결과

'c2' 열에 대해 중복된 값을 검사하기 때문에 처음으로 1과 2가 등장한 0행, 3행의 데이터를 제외하고 True가 출력된다.

 

 

중복 데이터 제거

 

중복 데이터를 제거하는 명령에는 drop_duplicates() 메소드가 있다. 중복되는 행을 제거하고 고유한 관측값을 가진 행들만 남긴다.

원본 객체를 변경하려면 inplace=Ture 옵션을 추가한다.

 

# 예제 5-7(1)

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]})
print(df)
print('\n')

df2 = df.drop_duplicates()
print(df2)
print('\n')

 

예제 5-7(1) 출력 결과

1행의 데이터가 0행의 데이터와 중복되기 때문에 제거된다.

 

# 예제 5-7(2)

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]})

df3 = df.drop_duplicates(subset=['c2', 'c3'])
print(df3)

drop_duplicates() 메소드subset 옵션에 '열 이름의 리스트'를 전달할 수 있다.

데이터의 중복 여부를 판별할때, subset 옵션에 해당하는 열을 기준으로 판단한다.

 

예제 5-7(2) 출력 결과

'c2', 'c3' 열을 기준으로 판별하기 때문에 1행과 4행의 데이터를 중복으로 판별하고 삭제한다.


파이썬 머신러닝 판다스 데이터분석
저자 : 오승환
출판 : 정보문화사
발매 : 2019.06.05

 

BELATED ARTICLES

more