PROGRESS
9 / 9
단원
넘파이(NumPy) 기초 13
데이터프레임 생성과 편집 9
데이터 탐색과 필터링 12
데이터 집계와 통계 13
데이터 시각화(matplotlib) 10
파일 입출력(CSV, Excel, JSON) 10
전체 목록
중복 데이터 제거하기 : 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)
HINT
힌트: "떨어뜨리다(drop)"와 "복제(duplicates)"라는 단어를 조합한 drop_duplicates() 함수를 사용합니다.
실행 결과 예시
중복 제거 후 주문 목록: 주문번호 고객명 메뉴 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으로 어떤 열 기준으로 중복을 판단할지 명확히 지정하세요.