Python/Python For Analytics
[Python] pandas 중복값 처리 (duplicates, drop_duplicates)
Pydole
2020. 4. 8. 01:12
데이터 분석을 하다보면 특정 컬럼의 중복값을 제거해야 할 때가 있는데, pandas의 duplicates, drop_duplicates 메소드를 사용할 수 있다.
duplicates( [ 'column' ], keep='first | last | False' ) : [ 'column' ] 에 대해서 중복이 있는지 확인
drop_duplicates( ['column'] , keep='first | last | False') : [ 'column' ] 중복값 처리
예제) 일자별 품목에 대한 금액 변동 DataFrame
product = [['2020-01-01','T10001', 20000, 'BLACK'],
['2020-01-01','S10001', 10000, 'WHITE'],
['2020-01-01','S20001', 12000, 'PINK'],
['2020-01-01','T20003', 30000, 'BLACK'],
['2020-01-05','S10001', 9000, 'WHITE'],
['2020-01-20','T10001', 19000, 'BLACK'],
['2020-01-10','T20003', 25000, 'BLACK'],
['2020-01-22','T10001', 17500, 'BLACK'],
['2020-01-19','S20001', 10000, 'WHITE']]
import pandas as pd
df = pd.DataFrame(product, columns=['regdate','product_code','price', 'color'])
df
product_code 중복이 있는지 확인
# keep = 'first' 첫 번째값은 False, 두 번째 값부터는 True 반환
df.duplicated(['product_code'], keep='first')
# keep = 'last' first의 반대
df.duplicated(['product_code'], keep='last')
# keep = False 처음과 끝과 관계없이 중복이면 True
df.duplicated(['product_code'], keep=False)
product_code 컬럼 중복처리
# keep = 'first' 중복값 중 처음값만 표시
df.drop_duplicates(['product_code'], keep='first')
# keep = 'last' 중복값 중 마지막값만 표시
df.drop_duplicates(['product_code'], keep='last')
# keep = False 중복값은 모두 제거. 유일한 값만 표시
df.drop_duplicates(['product_code'], keep=False)