본문 바로가기
개발

[Pandas] Dataframe 중복 데이터 찾기, 제거하기

by ▶ Carpe diem ◀ 2023. 10. 26.

[Pandas] Dataframe 중복 데이터 찾기, 제거하기

이전 글에서 아파트 매매 실거래가를 조회할 수 있는 방법에 대해 이야기 했었습니다.

2023.10.20 - [개발] - [Pandas] 아파트 매매 실거래가

 

[Pandas] 아파트 매매 실거래가

이전 글([Pandas] 법정동코드 조회하기)에서 법정동이란 무엇인지에 대해 알아보았고, 법정동코드를 조회하는 방법에 대해 알아보았습니다. 2023.10.14 - [개발] - [Pandas] 법정동코드 조회하기 [Pandas]

wide-shallow.tistory.com

 

아파트 매매 실거래가를 조회 하면 아래와 같이 동일 아파트의 동일 면적이 같은 달에 다수 거래되는 경우도 발생합니다.

2023년 5월 양천구 아파트 매매 실거래가 화면

위에 화면을 보면 2023년 5월에 목동신시가지 8단지 아파트 6채가 거래되었는데, $54.94m^2$이 5채, $71.77m^2$이 1채인 것을 알 수 있습니다. 위의 데이터에서 거래된 아파트 이름과 전용면적을 알기 위해 dataframe에서 중복 데이터를 찾고, 제거하는 방법에 대해 알아보겠습니다.

 

Dataframe 중복 데이터 찾기

먼저, dataframe에서 중복 데이터를 찾기 위해 간단한 예제를 만들어보겠습니다.

import pandas as pd
 
df = pd.DataFrame({'법정동' : ['신정동', '신정동', '신정동', '신정동', '신정동', '신정동'],
                   '아파트' : ['목동신시가지8', '목동신시가지8', '목동신시가지8', '목동신시가지8', '목동신시가지8', '목동신시가지8'],
                   '전용면적' : [54.94, 71.77, 54.94, 54.94, 54.94, 54.94]})
df

위 코드를 실행하면 아파트 매매 실거래가 화면에서 중복 데이터를 찾고 싶은 3개의 열에 대한 예제 화면이 보여집니다. 

예제 화면

DataFrame.duplicated(subset=None, keep='first') 함수를 사용해서 중복 데이터를 찾을 수 있습니다. duplicated() 함수의 각 parameter에 대해 알아보면 아래와 같습니다.

  • subset: 중복을 확인하고자 하는 열을 [리스트 형태]로 입력(default는 모든 열에 대해 중복 확인).
  • keep: first, last, False 중 선택(default: first).

예제는 법정동, 아파트 이름이 다 동일하지만 실제 데이터는 법정동, 아파트 이름도 다양할 수 있기 때문에 subset 에 ['법정동', '아파트', '전용면적'] 3개 열을 리스트 형태로 전달합니다.

df.duplicated(['법정동', '아파트', '전용면적'], keep='first')

위 코드를 실행하면 중복된 행에 대해 True/False로 반환됩니다.False는 지금까지 중복되지 않은 행이라는 의미이고, True는 이전 행에서 중복된 행이 있다는 것을 의미합니다.

중복 행 결과

지금까지 중복 행 찾는 것에 대해 알아보았고, 다음은 중복 행을 제거하는 방법에 대해 알아보겠습니다.

 

Dataframe 중복 데이터 제거하기

예제 데이터에서 전용면적  2개($54.94m^2$, $71.77m^2$)의 행만 남기고 싶습니다. 이를 위해 중복 데이터를 제거하는 방법을 알아보겠습니다.

 

DataFrame.drop_duplicates(subset=None, *, keep='first', inplace=False, ignore_index=False) 함수를 이용해서 중복 데이터를 제거할 수 있는데, drop_duplicates() 함수의 parameter에 대해 알아보면 다음과 같습니다. inplace, ignore_index parameter는 다른 함수에서도 자주 사용되는 parameter임으로 여기에서는 따로 언급하지 않겠습니다.

  • subset: 중복을 확인하고자 하는 열을 [리스트 형태]로 입력(default는 모든 열에 대해 중복 확인).
  • keep: first, last, False 중 선택(default: first).

 

3개의 열의 중복 데이터를 찾아서 제거하기 위해 아래와 같이 코드를 작성하였습니다.

df.drop_duplicates(['법정동', '아파트', '전용면적'], keep='first')

위 코드를 실행하면 아래와 같이 원하는 데이터만 확인할 수 있습니다.

중복 행을 제거한 결과 화면

 

다음 글에서 위에서 설명한 방법을 이용하여 아파트 매매 실거래가를 조회할 때 거래된 아파트, 전용면적을 선택하면 특정 기간 동안 실거래가의 변화를 보여줄 예정입니다.