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)