[파이썬] pandas에서 데이터 복제 (duplicated, drop_duplicates)

데이터 분석을 위해 자주 사용되는 pandas 라이브러리는 데이터 처리와 조작에 매우 편리한 기능을 제공합니다. 이 중에서도 데이터의 중복을 처리하는 방법은 중요한 주제 중 하나입니다.

이번 블로그 포스트에서는 pandas에서 데이터의 중복을 처리하는 두 가지 기능인 duplicateddrop_duplicates에 대해 살펴보겠습니다.

1. duplicated (중복 여부 확인)

duplicated 함수는 각 레코드 별로 중복 여부를 확인하는 함수입니다. 해당 레코드가 중복되면 True를, 중복되지 않으면 False를 반환합니다.

import pandas as pd

data = pd.DataFrame({'이름': ['Alice', 'Bob', 'Alice', 'Charlie'],
                     '나이': [25, 30, 25, 35]})

print(data.duplicated())

위의 예제에서는 data DataFrame에 중복된 이름과 나이를 포함한 4개의 레코드가 있습니다. duplicated 함수를 호출하면 각 레코드의 중복 여부를 확인할 수 있습니다. 출력 결과는 다음과 같습니다.

0    False
1    False
2     True
3    False
dtype: bool

위의 출력 결과에서 0, 1, 3번째 레코드는 중복이 아니기 때문에 False를 반환하고, 2번째 레코드는 첫 번째 레코드와 중복되기 때문에 True를 반환합니다.

2. drop_duplicates (중복된 데이터 제거)

drop_duplicates 함수는 중복된 레코드를 제거하는 함수입니다. 기본적으로는 첫 번째로 중복된 레코드를 유지하고, 그 이후의 중복된 레코드는 제거합니다.

import pandas as pd

data = pd.DataFrame({'이름': ['Alice', 'Bob', 'Alice', 'Charlie'],
                     '나이': [25, 30, 25, 35]})

# 중복된 레코드를 제거
data_unique = data.drop_duplicates()

print(data_unique)

위의 예제에서는 data DataFrame에 중복된 이름과 나이를 포함한 4개의 레코드가 있습니다. drop_duplicates 함수를 호출하면 중복된 레코드를 제거한 결과를 얻을 수 있습니다. 출력 결과는 다음과 같습니다.

      이름  나이
0  Alice  25
1    Bob  30
3    Bob  35

위의 출력 결과에서 중복된 레코드인 2번째 레코드가 제거되고, 첫 번째 레코드는 유지됩니다.

주의사항

data.duplicated(subset=['이름'])
data.drop_duplicates(subset=['이름'])