파이썬 판다스에서 중복값을 찾는 방법을 알아보겠습니다.
업무를 진행하다보면 판다스를 활용해서 중복값을 찾아야하는 업무가 종종 있는데요.
판다스 중복값 찾기
판다스에서 중복값을 찾는 명령어는
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)
중복값중 마지막 값을 남기고 삭제하면 아래처럼 처리가 됩니다.
오늘은 판다스를 활용해서 중복값이 있는지, 찾고 또 제거하는 방법을 알아보았는데요.
실무에서 자주 쓰는 기능이니 한번 정리해두시면 나중에 잘 사용할 수 있습니다.
'Programming > Python' 카테고리의 다른 글
파이썬 가상환경 설치하기 - venv (0) | 2023.06.18 |
---|---|
구글 드라이브 파이썬으로 연동하기 - 1. 구글 드라이브 설정하기 (0) | 2023.05.16 |
파이썬 웹사이트에서 주소 파일 다운 받기(rss feed) (0) | 2023.05.03 |
Pandas 기존 데이터와 다른 증분 차집합 구하는 방법 (0) | 2023.04.17 |
파이썬 Couldn't find a tree builder with the features you requested: lxml 에러 해결하기 (0) | 2023.04.13 |