Python/Pandas Tutorial

[Python] pandas tutorial :: drop duplicates in pandas

슈퍼짱짱 2020. 10. 12. 14:29
반응형

2020/09/18 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: pandas란? 데이터프레임이란? 시리즈란?

2020/09/19 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: read csv, txt file with pandas

2020/09/21 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: Create Data Frame with Dictionary, List

2020/09/21 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: Save Pandas Data Frame to CSV file

2020/09/21 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: Filtering(Selecting) rows, columns in pandas DataFrame

2020/09/22 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: Drop row or column in pandas DataFrame

2020/09/22 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: add row, column

2020/10/07 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: groupby

2020/10/07 - [분류 전체보기] - [Python] Pandas Tutorial :: groupby transform (groupby 결과 컬럼에 추가하기)

 

[Python] Pandas Tutorial :: groupby transform (groupby 결과 컬럼에 추가하기)

2020/09/18 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: pandas란? 데이터프레임이란? 시리즈란? 2020/09/19 - [Python/Pandas Tutorial] - [Python] Pandas Tutorial :: read csv, txt file with..

leedakyeong.tistory.com


판다스에서 중복 데이터 삭제하기

 

먼저 pandas library를 import 한다.

 

import pandas as pd

 


 

실습을 위해 0번째와 4번째 row가 정확히 일치하는 데이터를 생성한다.

 

df = pd.DataFrame({'name':['John','Nate','Edward','Zara','John'],
                  'major':['Computer Science','Computer Science','Computer Science','Psychology','Computer Science'],
                  'sex':['male','male','male','female','male']},
                 columns = ['name','major','sex'])

 

 


중복 row 를 확인한다. pandas.DataFrame.duplicated() 로 확인할 수 있다.

0번째 row 와 중복되는 4번째 row가 True 임을 확인 할 수 있다.

 

 

참고로 keep = 'last' 를 지정해주면 이후 중복되는 데이터가 아닌 앞에 위치에 True 임을 확인 할 수 있다.

 

 


중복 데이터를 삭제하는 방법은 간단하다. 

pandas.DataFrame.drop_duplicates() 로 삭제 할 수 있다. duplicated 가 아니라 duplicates 임을 주의한다.

 

 

 

역시 keep = 'last' 로 뒤에 데이터를 남기고, 앞에 데이터를 삭제 할 수도 있다.

 

 

단, 이렇게 삭제된 df 를 다시 어딘가에 할당해 주지 않으면 df 는 여전히 중복데이터가 삭제 되지 않은채로 존재한다.

즉, df = df.drop_duplicates() 로 할당해 주어야 df 에서 중복 데이터가 삭제된다.

 


이번에는 row 전체가 중복되지 않아도, 특정 컬럼만 중복된 데이터를 삭제하는 방법을 알아보겠다.

 

먼저, 실습 데이터를 생성한다.

row 가 전제 다 중복되진 않지만, 'name'이 중복되는 데이터가 존재하는 데이터프레임을 생성한다.

 

student_list = [
    {'name' : 'John',
    'major' : 'Computer Science',
    'sex' : 'male'},
    {'name' : 'Nate',
    'major' : 'Computer Science',
    'sex' : 'male'},
    {'name' : 'Edward',
    'major' : 'Computer Science',
    'sex' : 'male'},
    {'name' : 'Zara',
    'major' : 'Psychology',
    'sex' : 'female'},
    {'name' : 'Wendy',
    'major' : 'Economics',
    'sex' : 'female'},
    {'name' : 'Nate',
    'major' : None,
    'sex' : 'male'},
    {'name' : 'John',
    'major' : 'Economics',
    'sex' : 'male'}
]

df = pd.DataFrame(student_list, columns = ['name','major','sex'])

 

 

기존처럼 duplicated() 로 확인하면 True 는 없다. 모든 값이 일치하는 row 가 없기 때문이다.

 

 

'name' 컬럼이 중복된 데이터를 확인하려면 parameter로 'name' 을 전달해 주면 된다.

 

 

참고로 두 개 이상의 컬럼이 중복된 데이터를 확인하고 싶다면 'name' 자리에 ['COL1', 'COL2', ...] 로 입력해주면 된다.

 

'name' 이 중복된 데이터를 삭제하는 방법은 다음과 같다.

'name'을 파라미터로 전달하고, keep으로 앞 데이터를 살릴지, 뒤 데이터를 살릴지 전달한다.

 

 


참고

www.youtube.com/watch?v=MxYEwXnqdNQ&list=PLVNY1HnUlO25etNe08s1H1nIIbbZdJwxA&index=9

 

 

반응형