파이썬(Python)/pandas

[Python] Pandas dataframe 중복 (동일)값 찾고 삭제하는 방법

끄적끄적아무거나 2022. 2. 25. 18:06
반응형

 

목차

     

     

     

     

     

     

    [파이썬] Pandas Dataframe 중복 값 찾기

     

    판다스 Dataframe은 열과 행 (Column and row)로 구성되어 있습니다. 여기서 열 값 중에 같은 값들을 찾는 방법에 대해 알아 보겠습니다. 

     

    중복 값 찾기는 duplicate 함수로 구현 가능 합니다.

     

     

    예제 코드>>

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "name" : ["James", "James", "Kevin", "Adam", "David", "Adam"],
        "math" : [90,50,50,30,100,90],
        "physics" : [30,40,80,50,10,50],
        "english" : [90,70,30,90,90,40]
    })
    
    print("Origial Dataframe")
    print(df)
    
    dup_df = df.duplicated(subset=["name"])
    print("\nduplicated Dataframe")
    print(dup_df)

    라인 14번: duplicated 함수를 사용해서 반복되는 값은 True라고 출력하게 합니다. subset으로 특정 열(Column)에만 적용했습니다. subset을 사용하지 않으면 전체 열에 적용 됩니다.

     

     

    결과>>

    Origial Dataframe
        name  math  physics  english
    0  James    90       30       90
    1  James    50       40       70
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90
    5   Adam    90       50       40
    
    duplicated Dataframe
    0    False
    1     True
    2    False
    3    False
    4    False
    5     True
    dtype: bool
    반응형

     

     

     

     

     

     

    [파이썬] Pandas Dataframe 중복 값 갯수 세기(Counting)

     

    duplicated().sum() 함수를 사용해서 true 값을 세어 줍니다(Count). False 개수를 세고 싶다면 duplicate 함수 앞에 ~ 를 붙여 주면 됩니다.

     

    예제 코드>>

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "name" : ["James", "James", "Kevin", "Adam", "David", "Adam"],
        "math" : [90,50,50,30,100,90],
        "physics" : [30,40,80,50,10,50],
        "english" : [90,70,30,90,90,40]
    })
    
    print("Origial Dataframe")
    print(df)
    
    dup_df = df.duplicated(subset=["name"])
    print("\nduplicated Dataframe")
    print(dup_df)
    
    num_dup_df = dup_df.sum()
    print("\nNumber of duplicated Dataframe")
    print(num_dup_df)

    라인18~20번: 앞서 중복값을 확인한 dup_df 값에 True를 Sum 함수로 카운트 해줍니다.

     

     

    결과>>

    Origial Dataframe
        name  math  physics  english
    0  James    90       30       90
    1  James    50       40       70
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90
    5   Adam    90       50       40
    
    duplicated Dataframe
    0    False
    1     True
    2    False
    3    False
    4    False
    5     True
    dtype: bool
    
    Number of duplicated Dataframe
    2

     

     

     

     

     

     

     

    [파이썬] Pandas Dataframe 중복 값 위치 찾기(Location)

     

    위치 찾기는 loc 함수를 이용해서 찾습니다.

     

    예제 코드>>

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "name" : ["James", "James", "Kevin", "Adam", "David", "Adam"],
        "math" : [90,50,50,30,100,90],
        "physics" : [30,40,80,50,10,50],
        "english" : [90,70,30,90,90,40]
    })
    
    print("Origial Dataframe")
    print(df)
    
    loc_df = df.loc[df.duplicated(subset=["name"]), :]
    print("\nlocation of Duplicated Dataframe")
    print(loc_df)

    14번 라인: loc 함수를 사용해서 위치를 찾아 줍니다.

     

     

    결과>>

    Origial Dataframe
        name  math  physics  english
    0  James    90       30       90
    1  James    50       40       70
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90
    5   Adam    90       50       40
    
    duplicated Dataframe
        name  math  physics  english
    1  James    50       40       70
    5   Adam    90       50       40

     

     

     

     

     

     

     

     

    [파이썬] Pandas Dataframe 중복 값 삭제하기

     

    dataframe 내장 함수 drop_duplicates()를 사용하면 반복되는 내용은 삭제 해줍니다.

     

    예제 코드>>

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "name" : ["James", "James", "Kevin", "Adam", "David", "Adam"],
        "math" : [90,50,50,30,100,90],
        "physics" : [30,40,80,50,10,50],
        "english" : [90,70,30,90,90,40]
    })
    
    print("Origial Dataframe")
    print(df)
    
    drop_df = df.drop_duplicates(subset=["name"], keep="first")
    print("\nDrop Duplicated Dataframe")
    print(drop_df)

    14번 라인: 반복값 중에 첫번째 값을 유지하고 싶으면 keep="first"를 쓰고 마지막값을 유지하고 싶으면 keep="last"를 쓰고 반복되는 내용을 모두 삭제하려면 keep=False를 입력합니다.

     

     

    결과>>

    Origial Dataframe
        name  math  physics  english
    0  James    90       30       90
    1  James    50       40       70
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90
    5   Adam    90       50       40
    
    Drop Duplicated Dataframe
        name  math  physics  english
    0  James    90       30       90
    2  Kevin    50       80       30
    3   Adam    30       50       90
    4  David   100       10       90

     

     

     

     

     

     

     

    반응형