MLOps 부트캠프 by 한경+토스뱅크/Python

DataFrame - 중복값 찾고 처리하기

나니니 2024. 8. 3. 23:40

df.duplicated()

중복값 확인 시, 가장 먼저 나온 데이터는 중복값이 아닌 데이터로 보고 나머지값들을 중복값으로 인식한다.

모든 컬럼의 값이 동일해야 '중복값'으로 본다. 

airbnb_df.duplicated() # 중복값 여부 확인, True면 중복값이고 False면 아님

airbnb_df.duplicated().sum() # 중복된 값의 총합 계산

airbnb_df[airbnb_df.duplicated(subset='id')] # 'id'가 중복된 값의 데이터 확인

# 중복값을 리스트로 줄 수도 있음
airbnb_df[airbnb_df.duplicated(subset=['id', 'n_review', 'price')] # subset의 3개의 값이 모두 동일하면 중복값

# keep='first'가 기본값이며, 처음 나온 값을 중복값이 아닌 것으로 인지함
#	last는 마지막 나온 값이 중복값이 아닌 것으로 봄		
airbnb_df[airbnb_df.duplicated(subset='id', keep='first')]

# keep=False는 겹치는 값들을 모두 중복값으로 봄
airbnb_df[airbnb_df.duplicated(subset='id', keep=False)]

df.drop_duplicates()

airbnb_df.drop_duplicated() # 중복값이 포함된 row를 제거함

# subset을 통해 특정 컬럼의 값만 동일해도 중복값으로 처리할 수 있음
airbnb_df.drop_duplicates(subset='id') # id 컬럼값이 동일하면 중복값

# keep='first' 중복값 중, 첫번째 값만 남기고 모두 삭제(last는 마지막 값을 남기고 모두 삭제)
airbnb_df.drop_duplicates(subset='id', keep='first')

 

예제) 

효준이가 스마트폰 데이터를 수집할 때 중복으로 여러 번 입력한 데이터가 몇 개 있다고 합니다. cellphone_df에서 중복값은 1개씩만 남기고 나머지는 삭제해 주세요. 참고로 중복으로 입력한 데이터는 모든 컬럼에 있는 값들이 똑같다고 합니다.

주의 사항: 채점을 위해 가장 마지막 줄에는 cellphone_df라고 입력해서 DataFrame을 출력해 주세요.

import pandas as pd

cellphone_df = pd.read_csv('data/cellphone.csv')

cellphone_df = cellphone_df.drop_duplicates()

cellphone_df

 

결과