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/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 결과 컬럼에 추가하기)
판다스에서 중복 데이터 삭제하기
먼저 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
'Python > Pandas Tutorial' 카테고리의 다른 글
[Python Pandas] pandas table sorting by other table's column (0) | 2021.03.19 |
---|---|
[Python] pandas tutorial :: replace nan/na/null (0) | 2021.01.14 |
[Python] Pandas Tutorial :: groupby transform (groupby 결과 컬럼에 추가하기) (0) | 2020.10.07 |
[Python] Pandas Tutorial :: groupby (0) | 2020.10.07 |
[Python] Pandas Tutorial :: add row, column (0) | 2020.09.22 |