판다스 업무 최적화 - 엑셀 중복값 찾는 방법 총정리

파이썬 판다스에서 중복값을 찾는 방법을 알아보겠습니다.

 

업무를 진행하다보면 판다스를 활용해서 중복값을 찾아야하는 업무가 종종 있는데요.

 

판다스 중복값 찾기

판다스에서 중복값을 찾는 명령어는 

 

duplicated인데요. subset을 활용하면 중복값을 찾고자하는 열을 선택할 수 있습니다.

 

이때 keep은 중복값 처리를 위한 값인데요.

 

first는 처음것을 남기고, last는 마지막, false는 그냥 두는 것입니다.

 

 keep = 'first', 'last', False

import pandas as pd


data = {'name':['a', 'b', 'b', 'c', 'c'],
        'id': ['aa' , 'aa', 'bb', 'cc', 'dd'],
         'col':[1, 2, 3, 4, 5]}


df = pd.DataFrame(data, columns=['name','id','col'])

df_copy = df.duplicated(subset=['name'], keep=False)

print(df)

print(df_copy)

아래처럼 결과가 나옵니다.

이 때 복제된 여부의 값을 합쳐서 보기 위해서는 concat을 활용해서 붙여서 볼 수 있는데요.

 

axis를 1을 주면 왼쪽 오른쪽으로 합치게 됩니다.

 

import pandas as pd


data = {'name':['a', 'b', 'b', 'c', 'c'],
        'id': ['aa' , 'aa', 'bb', 'cc', 'dd'],
         'col':[1, 2, 3, 4, 5]}


df = pd.DataFrame(data, columns=['name','id','col'])

df_copy = df.duplicated(subset=['name'], keep=False)

df3 = pd.concat([df, df_copy], axis=1)

df3.columns = ['name', 'id', 'col','duf']

print(df3)

그래서 duf라는 필드에서 아래처럼 복사가 되게 됩니다.

 

판다스 중복값 개수 찾기

그리고 또 많이 쓰는 기능은 중복값 별로 갯수를 찾아야 하는 것인데요.

 

이 때에는 value_conuts() 함수를 활용할 수 있습니다.

df4 = pd.DataFrame(df3['name'].value_counts().reset_index())

현재 중복값을 찾으면 아래처럼 2/2/1개가 나오는데요.

이걸 활용해서 index가 아니라 name과 count로 변경하는 것이 보기 좋기 때문에

중복값

최종적으로 찾은 중복값 찾기 소스입니다.

 

이를 활용해서 다양한 방식으로 활용이 가능합니다.

import pandas as pd

#데이터 만들기
data = {'name':['a', 'b', 'b', 'c', 'c'],
        'id': ['aa' , 'aa', 'bb', 'cc', 'dd'],
         'col':[1, 2, 3, 4, 5]}

df = pd.DataFrame(data, columns=['name','id','col'])

#중복값 찾기

df_copy = df.duplicated(subset=['name'], keep=False)

df3 = pd.concat([df, df_copy], axis=1)

df3.columns = ['name', 'id', 'col','duf']

#중복값 갯수 확인

df4 = pd.DataFrame(df3['name'].value_counts().reset_index())

df4.columns = ['name', 'count']

df3 = pd.merge(df3, df4, on='name')

print(df3)

 

중복값 처리하기

판다스에서 마지막으로 이제 중복값을 처리할 수 잇는데요.

이경우 사용하는 함수는 drop_duplicates입니다.

 

위에서 중복이 있는지 알아보는 duplicated와 용법은 비슷합니다.

 

drop_duplicates(subset=['name'], keep='last')

 

df5 = df3.drop_duplicates(subset=['name'], keep='last')

print(df5)

중복값중 마지막 값을 남기고 삭제하면 아래처럼 처리가 됩니다.

오늘은 판다스를 활용해서 중복값이 있는지, 찾고 또 제거하는 방법을 알아보았는데요.

 

실무에서 자주 쓰는 기능이니 한번 정리해두시면 나중에 잘 사용할 수 있습니다.