Pandas를 사용하여 DataFrame에서 중복 행 찾기

Zeeshan Afridi 2023년6월21일
  1. DataFrame.duplicated() 메서드를 사용하여 DataFrame에서 중복 행 찾기
  2. 중복 행이 있는 DataFrame 만들기
  3. 모든 열을 기준으로 중복 행 선택
  4. 결론
Pandas를 사용하여 DataFrame에서 중복 행 찾기

정리 절차의 일부로 데이터 세트에서 중복 값을 식별해야 합니다. 중복 데이터는 불필요한 저장 공간을 소비하고 최소한 계산 속도를 늦춥니다. 그러나 최악의 시나리오에서 중복 데이터는 분석 결과를 왜곡하고 데이터 세트의 무결성을 손상시킬 수 있습니다.

Pandas라는 오픈 소스 Python 패키지는 구조화된 데이터의 처리 및 저장을 향상시킵니다. 또한 프레임워크는 중복 행 및 열 찾기 및 삭제와 같은 데이터 정리 절차에 대한 기본 제공 지원을 제공합니다.

이 문서에서는 열 전체 또는 일부 열을 사용하여 Pandas 데이터 프레임에서 중복 항목을 찾는 방법을 설명합니다. 이를 위해 Pandas의 Dataframe.duplicated() 메서드를 사용합니다.

DataFrame.duplicated() 메서드를 사용하여 DataFrame에서 중복 행 찾기

Python의 DataFrame 클래스용 Pandas 라이브러리는 다음과 같이 모든 열 또는 해당 열의 하위 집합을 기반으로 중복 행을 검색하는 멤버 메서드를 제공합니다.

DataFrame.duplicated(subset=None, keep="first")

행이 중복인지 고유한지 여부를 나타내는 일련의 부울을 반환합니다.

매개변수:

  1. 하위 집합: 여기에는 열 또는 열 레이블 모음이 필요합니다. 없음이 기본값입니다. 열을 전달한 후에는 중복 항목만 고려합니다.
  2. keep: 중복 값 처리를 규제합니다. first가 기본값인 세 가지 값만 있습니다.
  3. 첫 번째인 경우 첫 번째 항목은 고유한 항목으로 처리되고 나머지 값은 중복 항목으로 처리됩니다.
  4. 최신인 경우 최종 항목은 고유한 항목으로 처리되고 나머지 값은 중복 항목으로 처리됩니다.
  5. False인 경우 모든 동일한 값은 중복으로 간주됩니다.
  6. 부울 계열로 표시된 중복 행을 반환합니다.

중복 행이 있는 DataFrame 만들기

목록 모음으로 기본 Dataframe을 만들고 Name, AgeCity 열의 이름을 지정해 보겠습니다.

예제 코드:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]

df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

print(df)

출력:

    Name  Age      City
0     Joe   28   Chicago
1    John   32    Austin
2  Melvin   25    Dallas
3    John   32    Austin
4    John   32    Austin
5    John   32   Houston
6  Melvin   40  Dehradun
7   Hazel   32    Austin

모든 열을 기준으로 중복 행 선택

subset 매개변수 없이 Dataframe.duplicate()를 호출하여 모든 열에 따라 모든 행에 대한 중복 항목을 찾아 선택합니다. 그러나 중복 행이 있는 경우 첫 번째 인스턴스 위치에서 True가 포함된 부울 시리즈만 반환합니다(유지 인수의 기본값은 first임).

그런 다음 이 부울 시리즈를 DataFrame의 [] 연산자에 제공하여 중복 행을 선택합니다.

예제 코드:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]

df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

duplicate = df[df.duplicated()]

print("Duplicate Rows :")

print(duplicate)

출력:

Duplicate Rows :
   Name  Age    City
3  John   32  Austin
4  John   32  Austin

마지막 항목을 제외한 모든 중복 항목을 고려하려면 retain = "last"를 인수로 전달하십시오.

예제 코드:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]


df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

duplicate = df[df.duplicated(keep="last")]

print("Duplicate Rows :")

print(duplicate)

출력:

Duplicate Rows :
   Name  Age    City
1  John   32  Austin
3  John   32  Austin

그런 다음 지정된 몇 개의 열에 따라 중복 행만 선택하려는 경우 subset의 열 이름 목록을 매개변수로 제공하십시오.

예제 코드:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]

df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

# on 'City' column
duplicate = df[df.duplicated("City")]

print("Duplicate Rows based on City:")

print(duplicate)

출력:

Duplicate Rows based on City:
    Name  Age    City
3   John   32  Austin
4   John   32  Austin
7  Hazel   32  Austin

NameAge와 같은 둘 이상의 열 이름을 기준으로 중복 행을 선택합니다.

예제 코드:

# Import pandas library
import pandas as pd

# List of Tuples
employees = [
    ("Joe", 28, "Chicago"),
    ("John", 32, "Austin"),
    ("Melvin", 25, "Dallas"),
    ("John", 32, "Austin"),
    ("John", 32, "Austin"),
    ("John", 32, "Houston"),
    ("Melvin", 40, "Dehradun"),
    ("Hazel", 32, "Austin"),
]

df = pd.DataFrame(employees, columns=["Name", "Age", "City"])

# list of the column names
duplicate = df[df.duplicated(["Name", "Age"])]

print("Duplicate the rows based on Name and Age:")

print(duplicate)

출력:

Duplicate Rows based on Name and Age:
   Name  Age     City
3  John   32   Austin
4  John   32   Austin
5  John   32  Houston

결론

DataFrame에서 중복 행을 찾으려면 Pandas에서 dataframe.duplicated() 메서드를 사용하세요. 행이 중복인지 고유한지 여부를 나타내는 일련의 부울을 반환합니다.

이 기사가 여기에서 논의한 모든 예를 확인하여 열의 전체 또는 하위 집합을 사용하여 Dataframe에서 중복 행을 찾는 데 도움이 되었기를 바랍니다. 그런 다음 위에서 설명한 쉬운 단계를 사용하여 Pandas를 사용하여 중복 항목을 찾는 방법을 신속하게 결정할 수 있습니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

관련 문장 - Pandas DataFrame Row