개발은 처음이라 개발새발

[python/pandas] 판다스 중복행 제거 본문

파이썬/판다스

[python/pandas] 판다스 중복행 제거

leon_choi 2022. 7. 12. 00:16
반응형

데이터를 다루다 보면 중복행이 종종 보이는 경우가 있습니다. 가공 작업을 진행하는 입장에서 표본이 적은 상황에서는 가볍게 엑셀에서 지워도 무방합니다. 하지만 세상 일이라는 게 그리 호락호락하지 않죠. 최근 겪을 일을 이야기해보자면 새로운 게임 스탯을 만들기 위해 분석하는 과정에서 행이 20만 개가 넘는 데이터를 다룰 때였습니다. 처음에는 중복된 것이 없는 줄 알았는데 특정 부분이 지나지체 많다 싶어 확인해보기 무려 3만 개가 넘는 중복행이 있던군요. ㅠㅠ 정말 막막했는데 판다스에서 간단한 코드를 해결할 수 있었습니다. 우선 예제를 만들어보겠습니다. 

 

import pandas as pd
             
 dict_data = {'goal':[23,23,2,1,15,17,23],
             'assist':[7,13,12,7,8,9,7],
             'keyPass': [72,63,90,39,87,50,72],
             'bigChanceCreated':[10,18,18,8,16,19,10]}           
             
df_pl = pd.DataFrame(dict_data, index=['손흥민','살라','아놀드','칸셀루','데브라이너','케인','손흥민'])

print(df_pl)

 

fotmob 사이트에서 확인할 수 있는 21/22시즌 PL 데이터를 가지고 예시를 들어봤습니다.  결과를 보면 손흥민 선수의 기록이 중복돼 들어가 있는 것을 확인할 수 있는데요. 이렇게 중복되는 데이터를 지우기 위해서는 drop_duplicates()함수를 사용하면 됩니다. 기본적으로 drop_duplicates()만 사용했을 때는 맨 처음 행만 남기고 뒤에 중복되는 행을 제거합니다. 그러면 코드를 작성해보겠습니다.

 

import pandas as pd

dict_data = {'goal':[23,23,2,1,15,17,23],
             'assist':[7,13,12,7,8,9,7],
             'keyPass': [72,63,90,39,87,50,72],
             'bigChanceCreated':[10,18,18,8,16,19,10]}           
             
df_pl = pd.DataFrame(dict_data, index=['손흥민','살라','아놀드','칸셀루','데브라이너','케인','손흥민'])

df_pl = df_pl.drop_duplicates()

print(df_pl)

네 이렇게 마지막 행에 있던 손흥민의 중복 데이터가 사라진 것을 확인할 수 있습니다. drop_duplicats()는 괄호 안에 컬럼을 지정한다든지 'keep = ' 매소드를 통해 처음 값을 남길지 아니면 마지막 값을 남길지에 대해서도 지정할 수 있습니다. 

반응형