중복 데이터 제거하기 : drop_duplicates()

30 P
QUESTION 09 #300
쇼핑몰 주문 데이터에서 동일한 고객이 같은 메뉴를 중복 주문한 데이터를 찾아 삭제하고자 합니다. 빈칸을 채우세요.
main.py
import pandas as pd

# 쇼핑몰 주문 데이터
orders = pd.DataFrame({
    '주문번호': [1001, 1002, 1003, 1004, 1005],
    '고객명': ['강감찬', '이순신', '강감찬', '유관순', '이순신'],
    '메뉴': ['아메리카노', '라떼', '아메리카노', '민트초코', '라떼']
})

# 고객명과 메뉴가 모두 같으면 중복으로 간주하여 제거
clean_orders = orders.(subset=['고객명', '메뉴'])

print("중복 제거 후 주문 목록:")
print(clean_orders)
실행 결과 예시
중복 제거 후 주문 목록:
   주문번호  고객명     메뉴
0  1001  강감찬  아메리카노
1  1002  이순신     라떼
3  1004  유관순   민트초코
INTERACTIVE SHELL Shift + Enter 로 즉시 실행

drop_duplicates()로 중복 데이터 제거하기

실제 데이터에는 동일한 내용이 여러 번 기록되는 중복 데이터가 자주 발생합니다.

기본 문법

clean_df = df.drop_duplicates(subset=["열1", "열2"])

코드 분석

orders = pd.DataFrame({
    '주문번호': [1001, 1002, 1003, 1004, 1005],
    '고객명': ['강감찬', '이순신', '강감찬', '전광일', '이순신'],
    '메뉴': ['아메리카노', '라떼', '아메리카노', '민트초코', '라떼']
})
clean_orders = orders.drop_duplicates(subset=['고객명', '메뉴'])

동작 과정

주문번호 고객명 메뉴 중복?
1001 강감찬 아메리카노 첫 등장 → 유지
1002 이순신 라떼 첫 등장 → 유지
1003 강감찬 아메리카노 1001과 중복 → 삭제
1004 전광일 민트초코 첫 등장 → 유지
1005 이순신 라떼 1002와 중복 → 삭제

고객명 + 메뉴 조합이 같은 행(1003, 1005)이 제거됩니다.

subset 옵션

코드 중복 판단 기준
df.drop_duplicates() 모든 열이 동일해야 중복
df.drop_duplicates(subset=['고객명']) 고객명만 같으면 중복
df.drop_duplicates(subset=['고객명', '메뉴']) 두 열 조합이 같으면 중복

keep 옵션

중복된 데이터 중 어떤 것을 남길지 선택합니다.

코드 설명
keep='first' 첫 번째 등장만 유지 (기본값)
keep='last' 마지막 등장만 유지
keep=False 중복된 행 모두 삭제

💡 핵심: subset으로 어떤 열 기준으로 중복을 판단할지 명확히 지정하세요.