nada

[Python] 데이터 프레임 중복 제거 :: drop_duplicates 본문

Python/Pandas

[Python] 데이터 프레임 중복 제거 :: drop_duplicates

ds-nada 2023. 6. 16. 20:56

DataFrame 중복제거 :: drop_duplicates

df.drop_duplicates(subset = None, keep = False, inplace = False, ignore_index = False )
  • DF.drop_duplicates
    • 데이터 프레임(Data Frame)에서 중복값을 제거하고 고유한 값을 남김
    • option
      • subset : 열 레이블 또는 레이블 시퀀스
      • keep : 유지할 행
        • 'first' : 중복되는 데이터 중 첫 번째 행 유지
        • 'last' : 중복되는 데이터 중 마지막 번째 행 유지
        • False : 중복되는 데이터 전체 삭제
      • inplace : 대체 여부
        • True
        • False
      • ignore_index : 인덱스 재설정
        • True
        • False
import pandas as pd

df = pd.DataFrame({
  'Name' : ['김','강','권','김','남','강'],
  'Number' : [2, 1, 3, 2, 2, 1]
})
df
Name Number
0 2
1 1
2 3
3 2
4 2
5 1

1. 중복제거(Default)

df.drop_duplicates()
Name Number
0 2
1 1
2 3
4 2

→ 모든 열(columns)을 기준으로 중복 제거

2. 열을 지정하여 중복제거(subset)

df.drop_duplicates(subset=['Name'])
Name Number
0 2
1 1
2 3
4 2

→ 'Name' column을 지정하여 중복제거

3. 중복된 데이터를 제거하되 유지할 행 선택(keep)

3-1. 중복되는 데이터 중 첫 번째 행 유지

df.drop_duplicates(subset=['Name'],keep = 'first')
Name Number
0 2
1 1
2 3
4 2
  • 중복되는 데이터 'Name'중 첫 번째 행만 유지됨
    • Name : 김 Number : 2
    • Name : 강 Number : 1

3-2. 중복되는 데이터 중 마지막 행 유지

df.drop_duplicates(subset=['Name'],keep = 'last')
Name Number
2 3
3 2
4 2
5 1
  • 중복되는 데이터 'Name'중 마지막 행만 유지됨
    • Name : 김 Number : 2
    • Name : 강 Number : 1

3-3. 중복되는 데이터 전체 제거

df.drop_duplicates(subset=['Name'],keep = False)
Name Number
2 3
4 2

4. 대체 여부(inplace)

df.drop_duplicates(subset=['Name'],keep = False)
Name Number
2 3
4 2
df.drop_duplicates(subset=['Name'],keep = False,inplace = False)
Name Number
2 3
4 2
df
Name Number
0 2
1 1
2 3
3 2
4 2
5 1

→ df가 변경되지 않음

df.drop_duplicates(subset=['Name'],keep = False,inplace = True)
df
Name Number
2 3
4 2

→ df가 변경됨

5. 인덱스 재설정(ignore_index)

df.drop_duplicates(subset=['Name'],keep = False,inplace = False, ignore_index = True)
Name Number
0 3
1 2
df.drop_duplicates(subset=['Name'],keep = False,inplace = False, ignore_index = False)
Name Number
2 3
4 2