일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 윈도우10
- 윈도우11
- 비주얼베이직
- 문자열
- pandas
- win32com
- VBA
- 파워포인트
- 엑셀
- 파이썬GUI
- pythongui
- 안드로이드
- matlab
- windows
- git
- Excel
- Windows10
- 깃
- 아웃룩
- pyqt5
- Windows11
- python
- 오피스
- office
- python3
- 파이썬
- Android
- 파이썬3
- Outlook
- html
Appia의 IT세상
파이썬[Python] Pandas, DataFrame의 행(Row)기반의 중복된 데이터 찾기, 선택한 열(Column)기반 중복데이터 찾기 본문
파이썬[Python] Pandas, DataFrame의 행(Row)기반의 중복된 데이터 찾기, 선택한 열(Column)기반 중복데이터 찾기
Appia 2020. 11. 8. 07:03파이썬[Python] Pandas, DataFrame의 행(Row)기반의 중복된 데이터 찾기
종종 작업을 하다보면, 본의 아닌 이유로 중복된 데이터를 입력하게 되는 경우가 있습니다. 저의 경우 최근에 주식 관련된 데이터를 파싱해오고, 여러개의 데이터를 병합하는 과정에서 중복된 데이터가 존재하게 되었습니다. 그래서 처음에는 관련된 부분들을 손수 삭제하기 시작했는데, 어느 순간 그 부분이 손으로 하기에는 너무 많은 존재가 되어 버렸습니다. 그래서 이번에는 관련해서 행(Row)기반으로 중복된 데이터를 찾는 방법에 대해서 포스팅을 해보고자 합니다.
먼저 샘플 코드를 보면 다음과 같습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import pandas as pd
# Series 생성
ds = {'Name': pd.Series(['Choi', 'Kim', 'Lee', 'Park','Choi']),
'Age': pd.Series([25, 26, 25, 23, 25]),
'Rating': pd.Series([2.56, 3.20, 4.6, 3.8,2.56])}
# DataFrame 생성
df = pd.DataFrame(ds)
print(df) # 출력 DataFrame
|
cs |
위와 같은 코드를 바탕으로 출력을 해보니, 다음과 같은 결과가 나타납니다.
1
2
3
4
5
6
|
Name Age Rating
0 Choi 25 2.56
1 Kim 26 3.20
2 Lee 25 4.60
3 Park 23 3.80
4 Choi 25 2.56
|
cs |
위에서 보이는 바와 같이 0번과 4번 데이터가 동일하게 Choi, 25, 2.56인것을 알 수 있습니다. 관련해서 중복된 부분들을 찾기 위해서는 DataFrame에서 제공하는 다음 함수를 이용하시면 됩니다.
DataFrame.duplicated() |
행(Row) 기반의 중복 데이터 찾기
위의 함수를 코드에 적용하여 실행해보도록 하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import pandas as pd
# Series 생성
ds = {'Name': pd.Series(['Choi', 'Kim', 'Lee', 'Park','Choi']),
'Age': pd.Series([25, 26, 25, 23, 25]),
'Rating': pd.Series([2.56, 3.20, 4.6, 3.8,2.56])}
# DataFrame 생성
df = pd.DataFrame(ds)
print(df) # 출력 DataFrame
print("\nDuplicated Data :\n")
duplicateDFRow = df[df.duplicated()]
print(duplicateDFRow)
|
cs |
위의 코드를 실행해보면 다음과 같은 결과가 나타납니다.
1
2
3
4
5
6
7
8
9
10
11
|
Name Age Rating
0 Choi 25 2.56
1 Kim 26 3.20
2 Lee 25 4.60
3 Park 23 3.80
4 Choi 25 2.56
Duplicated Data :
Name Age Rating
4 Choi 25 2.56
|
cs |
만약 위의 duplicated()의 인자값으로 다음과 같은 keep='last'을 마지막 데이터는 실제 데이터로 간주하고 앞에 있는 데이터를 중복데이터로 간주합니다. 그럼 코드와 실행된 결과를 한번 살펴보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import pandas as pd
# Series 생성
ds = {'Name': pd.Series(['Choi', 'Kim', 'Lee', 'Park','Choi']),
'Age': pd.Series([25, 26, 25, 23, 25]),
'Rating': pd.Series([2.56, 3.20, 4.6, 3.8,2.56])}
# DataFrame 생성
df = pd.DataFrame(ds)
print(df) # 출력 DataFrame
print("\nDuplicated Data :\n")
duplicateDFRow = df[df.duplicated(keep='last')]
print(duplicateDFRow)
|
cs |
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
1
2
3
4
5
6
7
8
9
10
11
|
Name Age Rating
0 Choi 25 2.56
1 Kim 26 3.20
2 Lee 25 4.60
3 Park 23 3.80
4 Choi 25 2.56
Duplicated Data :
Name Age Rating
0 Choi 25 2.56
|
cs |
그럼 이제는 열(Column)기반의 중복 데이터에 대해서 검출하는 방법에 대해서 살펴보겠습니다.
열(Column)기반의 중복데이터 찾기
duplicated()함수의 인자 값으로 원하는 Column이름을 입력해주시면 그 부분에 대한 중복 데이터에 대해서확인을 해줍니다. 그럼 간단히 코드로 살펴보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import pandas as pd
# Series 생성
ds = {'Name': pd.Series(['Choi', 'Kim', 'Lee', 'Park','Choi']),
'Age': pd.Series([25, 26, 25, 23, 25]),
'Rating': pd.Series([2.56, 3.20, 4.6, 3.8,2.56])}
# DataFrame 생성
df = pd.DataFrame(ds)
print(df) # 출력 DataFrame
print("\nDuplicated Data :\n")
duplicateDFRow = df[df.duplicated('Age')]
print(duplicateDFRow)
|
cs |
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
Name Age Rating
0 Choi 25 2.56
1 Kim 26 3.20
2 Lee 25 4.60
3 Park 23 3.80
4 Choi 25 2.56
Duplicated Data :
Name Age Rating
2 Lee 25 4.60
4 Choi 25 2.56
|
cs |
물론, 처음 0 Choi 25 2.56의 Age부분 25를 보고 관련된 Age가 중복되는 데이터들을 표시해줍니다. 위와 같은 부분들을 통해서 중첩되는 데이터에 대해서 쉽게 확인할 수 있습니다.
이번 포스팅에서는 파이썬[Python] Pandas, DataFrame의 행(Row)기반의 중복된 데이터 찾기, 선택한 열(Column)기반 중복데이터 찾기라는 주제로 포스팅을 해봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.
'Python > Python Pandas' 카테고리의 다른 글
파이썬[Python] Pandas, DataFrame / Series의 맴버의 값이 존재하는지 확인하는 방법 (0) | 2021.06.03 |
---|---|
파이썬[Python] Pandas, DataFrame의 행(Row)기반의 중복된 데이터 삭제하기 (0) | 2020.11.13 |
파이썬[Python] Pandas, CSV파일 불려오기, 내보내기 (1) | 2020.04.24 |
파이썬[Python] Pandas, DataFrame의 날짜를 이용한 Index(Label)만들기 (0) | 2020.04.06 |
파이썬[Python] Pandas, DataFrame의 범위를 이용한 열, 행 선택 방법(iloc) (4) | 2020.04.04 |