[Python Pandas] 중복 행 제거 함수 drop_duplicates 이해하기

이번 포스팅에서는 데이터 분석 시 필수적으로 알아야 하는 Python Pandas 라이브러리의 함수 중 중복 행 제거 함수 drop_duplicates 에 대해서 알아 보겠습니다.

중복 행 제거 함수 drop_duplicates 구문

중복 행을 제거하는 함수 drop_duplicates 함수 구문은 아래와 같고,


DataFrame.drop_duplicates(subset = None*
keep = ‘first’
inplace = False
ignore_index = False)


반환 값은 중복 행이 제거된 DataFrame입니다.


drop_duplicates 인수

  • subset : column label or sequence of labels, optional
    • 특정 열에 대해서만 중복 여부를 판단할 때 사용합니다. 기본적으로 모든 열을 기준으로 중복 여부를 체크합니다.


  • keep : {‘first’, ‘last’, False}, default ‘first’
    • 중복 행을 제거할 때, 유지할 행을 결정합니다.
    • ‘first’ : 중복 행 중 첫 번째 행을 유지하고, 중복된 항목을 삭제합니다.
    • ‘last’ : 중복 행 중 마지막 행을 유지하고, 중복된 항목을 삭제합니다.
    • False : 모든 중복 항목을 삭제합니다.


  • inplace : bool, default False
    • DataFrame을 새로 만드는 대신 기존 DataFrame을 업데이트 할 지 결정합니다.


  • ignore_index : bool, default False
    • True인 경우 결과 축에는 0, 1, …, n – 1이라는 인덱스 값을 지정합니다.



drop_duplicates 사용 예시

import pandas as pd

tempData = pd.DataFrame({
    '브랜드': ['농심', '농심', '오뚜기', '오뚜기', '오뚜기'],
    '유형': ['컵', '컵', '컵', '팩', '팩'],
    '등급': [4, 4, 3.5, 15, 5]
})

tempData
--------------------------------------------------------------
    브랜드  유형  등급
0	농심    컵    4.0
1	농심    컵	 4.0
2	오뚜기  컵	 3.5
3	오뚜기  팩	 15.0
4	오뚜기  팩	 5.0

기본적으로 모든 열의 값이 중복일 때 행을 제거합니다.

tempData.drop_duplicates()
--------------------------------------------------------------
	브랜드	유형 등급
0	농심	컵	 4.0
2	오뚜기	컵	 3.5
3	오뚜기	팩	 15.0
4	오뚜기	팩	 5.0

특정 열의 값 기준으로 중복 항목을 제거하려면 subset 옵션을 사용합니다.

tempData.drop_duplicates(subset = ['브랜드'])
--------------------------------------------------------------
	브랜드	유형	 등급
0	농심	컵	     4.0
2	오뚜기	컵	     3.5

중복 행을 제거하고 마지막 행을 유지하려면 keep 옵션을 사용합니다.

tempData.drop_duplicates(subset = ['브랜드', '유형'], keep = 'last')
--------------------------------------------------------------------
	브랜드	유형	등급
1	농심	컵	    4.0
2	오뚜기	컵	    3.5
4	오뚜기	팩	    5.0

이상으로 데이터 분석 및 전처리 시 필수적으로 사용하는 drop_duplicates에 대해서 알아 보았습니다. Python을 데이터 분석 및 전처리 용으로 많이 사용하고자 하시는 분들이라면 필히 알고 계셔야 하는 함수입니다.

감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다