본문 바로가기
목차
Python/pandas

[Pandas] 중복 데이터 삭제-drop_duplicates() 메서드

by ds31x 2025. 8. 21.
728x90
반응형

https://datascienceparichay.com/article/drop-duplicates-from-a-pandas-dataframe/

 

drop_duplicatesDataFrame에서 중복된 행(row) 을 제거할 때 사용하는 메서드.

  • 기본적으로 전체 row 전체를 기준 으로 중복을 판별.
  • subset 파라미터를 사용하면 특정 column 하나 혹은 여러 columns을 기준으로 중복을 판별하여 제거할 수 있음.

예제

예제를 위한 간단한 DataFrame생성

import pandas as pd

# 간단한 DataFrame 생성
df = pd.DataFrame({
    "Name": ["Alice", "Bob", "Charlie", "Alice", "Bob"],
    "Sex": ["F", "M", "M", "F", "M"],
    "Age": [25, 30, 30, 25, 40]
})

print("원본 DataFrame:")
print(df)


기본 사용

# 전체 행 기준 중복 제거
print("\n중복 제거 (전체 행 기준):")
print(df.drop_duplicates())
  • drop_duplicates() : 전체 행 기준으로 중복 제거

중복되는 것들 중 최초로 등장한 것만 남김.


subset을 활용

# 특정 열 기준 중복 제거 (단일 컬럼)
print("\n중복 제거 (Name 열 기준):")
print(df.drop_duplicates(subset=["Name"]))
  • drop_duplicates(subset=["col"]) : 특정 열 기준으로 중복 제거

이름이 같은 Bob 이 고려되어 제거됨.


복수개의 column지정한 subset.

# 복수 열 기준 중복 제거 (Name + Sex)
print("\n중복 제거 (Name + Sex 열 기준):")
print(df.drop_duplicates(subset=["Name", "Sex"]))
  • drop_duplicates(subset=["col1", "col2"]) : 여러 열을 조합해 중복 제거


keep 파라미터를 통한 남길 row 제어

# keep 옵션: 'first'(기본), 'last', False
print("\n중복 제거 (Name + Sex 열 기준, 마지막 값 유지):")
print(df.drop_duplicates(subset=["Name", "Sex"], keep="last"))
  • keep 옵션:
    • 'first' (기본) : 첫 번째 항목 유지
    • 'last' : 마지막 항목 유지
    • False : 모든 중복 제거

기본이 첫번째 record유지인데, last로 바꾼 경우.


# 전체 행 기준 중복 제거하는데 중복되는 것은 모조리 삭제.
print("\n중복된 경우 전체 record 제거 (전체 행 기준):")
print(df.drop_duplicates(keep=False))
  • 중복된 record는 모조리 삭제.


같이보면 좋은 자료

2024.01.09 - [Python/pandas] - [pandas] Column (or rows) 제거하기

 

[pandas] Column (or rows) 제거하기

DataFrame 에서 column을 제거하는데에 사용되는 idiomatic approach는 drop 메서드를 사용하는 것임. 사실 drop은 axis라는 parameter를 가지고 있고,0이 주어지면 row를 지우고,1이 주어지면 column을 지움.첫번째

ds31x.tistory.com

2024.01.09 - [Python/pandas] - [pandas] dropna : missing value 처리 (삭제)

 

[pandas] dropna : missing value 처리 (삭제)

na 는 not available 로서 값이 비어있거나 숫자가 아니거나(nan: not a number) 등등으로특정 cell에 값이 유효하지 않아 사실상 비어있는 경우를 의미함.dropna는 na값을 가지고 있는 row나 column을 제거하는

ds31x.tistory.com

 

728x90