Python Pandas

Pandas 중복 데이터 제거 (drop_duplicates())

PyExplorer 2025. 2. 9. 10:51
728x90

Pandas 중복 데이터 제거 (drop_duplicates())

데이터 분석을 수행하다 보면 중복된 데이터를 처리해야 하는 경우가 많습니다. 예를 들어, 웹 크롤링을 통해 데이터를 수집하거나 여러 데이터셋을 병합하는 과정에서 동일한 행이 여러 번 포함될 수 있습니다. Pandas에서는 drop_duplicates() 메서드를 사용하여 간단하게 중복 데이터를 제거할 수 있습니다. 이번 포스팅에서는 drop_duplicates()의 기본 사용법과 다양한 활용법을 알아보겠습니다.


1. drop_duplicates() 기본 사용법

drop_duplicates() 메서드는 기본적으로 DataFrame에서 완전히 동일한 행이 중복되었을 때 첫 번째 행을 유지하고 나머지 중복된 행을 제거합니다.

예제 데이터 생성

먼저 중복된 데이터를 포함한 DataFrame을 생성해 보겠습니다.

import pandas as pd

data = {
    "이름": ["김철수", "이영희", "김철수", "박민수", "이영희"],
    "나이": [25, 30, 25, 40, 30],
    "도시": ["서울", "부산", "서울", "대구", "부산"]
}
df = pd.DataFrame(data)
print("원본 데이터프레임:")
print(df)

출력 결과:

     이름  나이  도시
0  김철수  25  서울
1  이영희  30  부산
2  김철수  25  서울
3  박민수  40  대구
4  이영희  30  부산

위 데이터프레임에서 김철수(25, 서울)이영희(30, 부산)의 행이 각각 중복되어 있습니다.

기본적인 중복 제거

drop_duplicates()를 사용하여 중복된 행을 제거할 수 있습니다.

df_unique = df.drop_duplicates()
print("중복 제거 후 데이터프레임:")
print(df_unique)

출력 결과:

     이름  나이  도시
0  김철수  25  서울
1  이영희  30  부산
3  박민수  40  대구

기본적으로 drop_duplicates()는 첫 번째 등장한 행을 유지하고, 이후 중복된 행을 제거합니다.


2. 특정 열을 기준으로 중복 제거

데이터프레임 전체가 아니라 특정 열만 고려하여 중복을 제거할 수도 있습니다.

특정 열을 기준으로 중복 제거

예를 들어, 이름 열을 기준으로 중복을 제거하고 싶다면 다음과 같이 사용할 수 있습니다.

df_unique_name = df.drop_duplicates(subset=["이름"])
print("이름을 기준으로 중복 제거 후 데이터프레임:")
print(df_unique_name)

출력 결과:

     이름  나이  도시
0  김철수  25  서울
1  이영희  30  부산
3  박민수  40  대구

이 경우, 이름이 동일한 행 중에서 첫 번째 등장한 행만 유지됩니다.

여러 개의 열을 기준으로 중복 제거

여러 열을 기준으로 중복을 제거하려면 subset에 여러 개의 열을 리스트로 지정하면 됩니다.

df_unique_name_city = df.drop_duplicates(subset=["이름", "도시"])
print("이름과 도시를 기준으로 중복 제거 후 데이터프레임:")
print(df_unique_name_city)

출력 결과:

     이름  나이  도시
0  김철수  25  서울
1  이영희  30  부산
3  박민수  40  대구

이름도시가 동일한 행은 하나만 남고 중복된 행은 제거되었습니다.


3. 마지막으로 등장한 행 유지하기

기본적으로 drop_duplicates()는 첫 번째 등장한 행을 유지하지만, 마지막으로 등장한 행을 유지하려면 keep='last' 옵션을 사용합니다.

df_last = df.drop_duplicates(keep='last')
print("마지막으로 등장한 행을 유지한 데이터프레임:")
print(df_last)

출력 결과:

     이름  나이  도시
2  김철수  25  서울
4  이영희  30  부산
3  박민수  40  대구

첫 번째 등장한 행이 아니라 마지막으로 등장한 행이 유지된 것을 확인할 수 있습니다.


4. 모든 중복된 행 제거하기

중복된 값이 있는 모든 행을 제거하고 싶다면 keep=False 옵션을 사용합니다.

df_no_duplicates = df.drop_duplicates(keep=False)
print("모든 중복된 행 제거 후 데이터프레임:")
print(df_no_duplicates)

출력 결과:

     이름  나이  도시
3  박민수  40  대구

김철수이영희는 중복된 행이 있으므로 모두 삭제되고 박민수만 남습니다.


5. 중복 제거 후 데이터프레임 유지하기

drop_duplicates() 메서드는 기본적으로 새로운 데이터프레임을 반환합니다. 기존 데이터프레임을 직접 수정하려면 inplace=True 옵션을 사용하면 됩니다.

df.drop_duplicates(inplace=True)
print("원본 데이터프레임에서 중복 제거 후:")
print(df)

이렇게 하면 df 자체가 변경됩니다.


결론

Pandas의 drop_duplicates() 메서드는 데이터의 중복을 효율적으로 제거할 수 있는 강력한 기능을 제공합니다.

  • 기본적으로 첫 번째 등장한 행을 유지하고 중복된 행을 제거합니다.
  • 특정 열을 기준으로 중복을 제거할 수 있습니다.
  • keep='last' 옵션으로 마지막으로 등장한 행을 유지할 수 있습니다.
  • keep=False 옵션을 사용하면 중복된 모든 행을 제거할 수 있습니다.
  • inplace=True 옵션을 사용하면 원본 데이터프레임을 직접 수정할 수 있습니다.

중복 데이터를 적절히 제거하여 데이터의 정확도를 높이고 분석의 신뢰성을 확보하세요!

728x90