[Pandas] 데이터프레임 조건 행 제외하기

반응형
    반응형

    판다스(Pandas)에서 조건에 맞는 행 제외하는 방법

    판다스를 활용하다 보면 특정 조건에 맞는 행만 선택하거나 제외해야 하는 상황이 자주 발생합니다. 이 글에서는 판다스에서 특정 조건에 맞는 행을 제외하는 방법을 여러 가지 예제를 통해 살펴보겠습니다. 데이터 분석과 전처리 과정에서 매우 유용한 테크닉이니 꼭 알아두세요!

    조건에 맞는 행 제외하기: 기본 원리

    판다스에서 조건에 맞는 행을 제외하려면 부울 인덱싱(Boolean Indexing)과 ~ 연산자를 사용합니다. ~는 조건을 반전(negate)시켜 해당 조건에 맞는 행을 제외하도록 도와줍니다.

     

     

    import pandas as pd
    
    데이터프레임 생성
    data = {'이름': ['Alice', 'Bob', 'Charlie', 'David'],
    '나이': [25, 30, 35, 40]}
    df = pd.DataFrame(data)
    
    특정 조건에 맞는 행 제외
    df_filtered = df[~(조건)]

     

    위의 구조에서 조건에 해당하는 부분을 원하는 필터링 조건으로 설정합니다.

     

    실습 예제

    예제 1: 특정 값이 있는 행 제외

    예를 들어, '나이'가 30인 행을 제외하고 싶다면 다음과 같이 합니다.

     

    나이'가 30인 행 제외
    df_filtered = df[~(df['나이'] == 30)]
    print(df_filtered)

    0 Alice 25
    2 Charlie 35
    3 David 40

     

    예제 2: 여러 조건으로 행 제외

    여러 조건을 조합하려면 논리 연산자인 | (OR) 또는 & (AND)를 사용합니다.

    예를 들어, '나이'가 30이거나 '이름'이 'Alice'인 행을 제외하려면 다음과 같이 합니다.

     

    '나이'가 30이거나 '이름'이 'Alice'인 행 제외
    df_filtered = df[~((df['나이'] == 30) | (df['이름'] == 'Alice'))]
    print(df_filtered)

    2 Charlie 35
    3 David 40

     

     

    예제 3: 특정 값 목록에 포함된 행 제외

    특정 값 목록에 해당하는 행을 제외하려면 isin() 메서드를 사용합니다. 예를 들어, '이름'이 ['Alice', 'David']에 포함된 행을 제외하려면 다음과 같이 합니다.

    #이름이 특정 값 목록에 포함된 행 제외
    names_to_exclude = ['Alice', 'David']
    df_filtered = df[~df['이름'].isin(names_to_exclude)]
    print(df_filtered)

    1 Bob 30
    2 Charlie 35

     

    고급 활용

    예제 4: 조건을 함수로 정의하여 제외

    조건을 복잡한 로직으로 정의해야 한다면, 람다 함수나 사용자 정의 함수를 활용할 수 있습니다. 예를 들어, '나이'가 30 이상인 행을 제외하려면 ~ 와 부등식을 이용합니다.

    #사용자 정의 조건 함수 사용
    df_filtered = df[~(df['나이'] >= 30)]
    print(df_filtered)

    0 Alice 25

     

     

    예제 5: 여러 컬럼을 조합한 조건으로 제외

    여러 컬럼의 값을 조합해 조건을 생성할 수도 있습니다. 예를 들어, '나이'가 30 이상이고, '이름'이 'David'가 아닌 경우를 제외하려면 다음과 같이 합니다.

    #여러 컬럼 조합 조건으로 제외
    df_filtered = df[~((df['나이'] >= 30) & (df['이름'] != 'David'))]
    print(df_filtered)

    0 Alice 25
    3 David 40

     

    중복된 데이터 제거와의 차이

    조건에 맞는 행 제외는 특정 조건을 기준으로 제거하는 작업입니다. 반면, 중복된 데이터를 제거하려면 drop_duplicates() 메서드를 사용합니다. 이 두 작업은 목적과 적용 방식이 다릅니다.

     

    마치며

    판다스에서 조건에 맞는 행을 제외하려면 부울 인덱싱과 ~ 연산자를 활용합니다.

    단일 조건뿐만 아니라, 여러 조건을 |(OR)와 &(AND)로 조합할 수 있습니다.

    isin() 메서드를 사용하면 특정 값 목록을 기준으로 제외할 수 있습니다.

    필요에 따라 사용자 정의 함수나 복잡한 조건을 추가적으로 활용해 보세요.

    댓글

    Designed by JB FACTORY

    ....