Python(파이썬) set과 drop_duplicates: 중복 값 처리의 차이점
set과 drop_duplicates의 주요 차이점
1. 데이터 유형: set은 Python의 기본 자료형으로 리스트, 튜플 등에서 중복을 제거할 때 사용되며, drop_duplicates는 pandas의 DataFrame과 Series에서 중복 행을 제거할 때 사용됩니다.
2. 정렬 유지: set은 원래 데이터의 순서를 보장하지 않습니다. 반면 drop_duplicates는 데이터의 원래 순서를 유지하면서 중복을 제거합니다.
3. 선택적 중복 제거: drop_duplicates는 특정 열을 기준으로 중복을 제거하거나 첫 번째 또는 마지막 중복값만 남기는 등의 유연한 옵션을 제공합니다. 반면 set은 이러한 옵션을 제공하지 않습니다.
Python : set
Python의 set
은 중복된 값을 가지지 않는 집합 자료형입니다. 주로 리스트나 튜플에서 중복된 값을 제거할 때 사용됩니다.
예시 1: 리스트에서 중복 제거하기
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set(my_list))
print(unique_list)
Output:
[1, 2, 3, 4, 5]
예시 2: 문자열에서 중복 문자 제거하기
my_string = "hello"
unique_chars = ''.join(set(my_string))
print(unique_chars)
Output:
"ehlo"
Pandas : drop_duplicates()
Pandas의 drop_duplicates
메서드는 DataFrame 또는 Series에서 중복된 행을 제거하는데 사용됩니다. 기본적으로 모든 열을 기준으로 중복된 행을 찾아 제거하며, 특정 열을 기준으로 중복된 행을 제거할 수도 있습니다.
예시 3: DataFrame에서 중복 행 제거하기
import pandas as pd
df = pd.DataFrame({
'A': [1, 2, 2, 3, 4, 4],
'B': [5, 6, 6, 7, 8, 8]
})
df = df.drop_duplicates()
print(df)
Output:
A B
0 1 5
1 2 6
3 3 7
4 4 8
예시 4: 특정 열을 기준으로 중복 행 제거하기
df = pd.DataFrame({
'A': [1, 2, 2, 3, 4, 4],
'B': [5, 6, 7, 8, 9, 10]
})
df = df.drop_duplicates(subset='A')
print(df)
Output:
A B
0 1 5
1 2 6
3 3 8
4 4 9
예시 5: 첫 번째 중복값만 남기기
df = pd.DataFrame({
'A': [1, 2, 2, 3, 4, 4],
'B': [5, 6, 6, 7, 8, 8]
})
df = df.drop_duplicates(keep='first')
print(df)
Output:
A B
0 1 5
1 2 6
3 3 7
4 4 8
예시 6: 마지막 중복값만 남기기
df = pd.DataFrame({
'A': [1, 2, 2, 3, 4, 4],
'B': [5, 6, 6, 7, 8, 8]
})
df = df.drop_duplicates(keep='last')
print(df)
Output:
A B
0 1 5
2 2 6
3 3 7
5 4 8
예시 7: 모든 중복값 제거하기
df = pd.DataFrame({
'A': [1, 2, 2, 3, 4, 4],
'B': [5, 6, 6, 7, 8, 8]
})
df = df.drop_duplicates(keep=False)
print(df)
Output:
A B
0 1 5
3 3 7
예시 8: Series에서 중복값 제거하기
s = pd.Series([1, 2, 2, 3, 3, 3, 4, 4, 5])
s = s.drop_duplicates()
print(s)
Output:
0 1
1 2
3 3
6 4
8 5
dtype: int64
결론
중복 처리에 있어서 set
과 drop_duplicates
는 각각의 장점을 가지고 있습니다. 사용하려는 데이터의 유형과 필요한 기능에 따라 적절한 메서드나 함수를 선택하여 활용하면 됩니다.