[파이썬] pandas에서 데이터 복제 (duplicated, drop_duplicates)
데이터 분석을 위해 자주 사용되는 pandas 라이브러리는 데이터 처리와 조작에 매우 편리한 기능을 제공합니다. 이 중에서도 데이터의 중복을 처리하는 방법은 중요한 주제 중 하나입니다.
이번 블로그 포스트에서는 pandas에서 데이터의 중복을 처리하는 두 가지 기능인 duplicated
와 drop_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번째 레코드가 제거되고, 첫 번째 레코드는 유지됩니다.
주의사항
duplicated
와drop_duplicates
함수는 모두 모든 컬럼을 기준으로 중복을 확인합니다. 만약 특정 컬럼에 대해서만 중복을 확인하고 싶다면,subset
파라미터를 사용하여 해당 컬럼을 지정할 수 있습니다.
data.duplicated(subset=['이름'])
data.drop_duplicates(subset=['이름'])
- 중복된 레코드를 확인하거나 제거할 때에는 데이터의 특성과 목적에 맞게 적절한 방법을 선택해야 합니다. 중복된 데이터를 정확히 이해하고 처리하는 것이 중요합니다.