개발은 처음이라 개발새발

isin()매소드를 활용한 필터링 [python/pandas] 본문

파이썬/판다스

isin()매소드를 활용한 필터링 [python/pandas]

leon_choi 2022. 8. 19. 09:00
반응형

데이터프레임의 열에 isin()매소드를 적용하면 특정 값을 가진 행들을 따로 추출할 수 있습니다. 이때 isin() 매소드 안에는 데이터프레임에서 추출하려는 값들을 리스트로 해서 입력하면 됩니다. 그렇다면 바로 예제를 통해 풀어보도록 하겠습니다. 먼저 비교를 위해 boolean indexing을 먼저 적어보도록 하겠습니다. 

import seaborn as sns

titanic = sns.load_dataset('titanic')

#함께 탑승한 형제 또는 배우자의 수가 3, 4, 5인 승객만 추출 - 불린 인덱싱
mask3 = titanic['sibsp'] == 3
mask4 = titanic['sibsp'] == 4
mask5 = titanic['sibsp'] == 5

df_boolean = titanic[mask3|mask4|mask5]

print(df_boolean.head(10),'\n')
survived  pclass     sex   age  sibsp  parch      fare embarked  class    who  adult_male deck  embark_town alive  alone
7          0       3    male   2.0      3      1   21.0750        S  Third  child       False  NaN  Southampton    no  False
16         0       3    male   2.0      4      1   29.1250        Q  Third  child       False  NaN   Queenstown    no  False
24         0       3  female   8.0      3      1   21.0750        S  Third  child       False  NaN  Southampton    no  False
27         0       1    male  19.0      3      2  263.0000        S  First    man        True    C  Southampton    no  False
50         0       3    male   7.0      4      1   39.6875        S  Third  child       False  NaN  Southampton    no  False
59         0       3    male  11.0      5      2   46.9000        S  Third  child       False  NaN  Southampton    no  False
63         0       3    male   4.0      3      2   27.9000        S  Third  child       False  NaN  Southampton    no  False
68         1       3  female  17.0      4      2    7.9250        S  Third  woman       False  NaN  Southampton   yes  False
71         0       3  female  16.0      5      2   46.9000        S  Third  woman       False  NaN  Southampton    no  False
85         1       3  female  33.0      3      0   15.8500        S  Third  woman       False  NaN  Southampton   yes  False

네 그러면 이제 isin()매소드를 활용해 같은 예제를 한번 만들어 보겠습니다.

#isin()매소드를 활용해 동일한 조건으로 추출
isin_filter = titanic['sibsp'].isin([3,4,5])
df_isin = titanic[isin_filter]

print(df_isin.head(10),'\n')
survived  pclass     sex   age  sibsp  parch      fare embarked  class    who  adult_male deck  embark_town alive  alone
7          0       3    male   2.0      3      1   21.0750        S  Third  child       False  NaN  Southampton    no  False
16         0       3    male   2.0      4      1   29.1250        Q  Third  child       False  NaN   Queenstown    no  False
24         0       3  female   8.0      3      1   21.0750        S  Third  child       False  NaN  Southampton    no  False
27         0       1    male  19.0      3      2  263.0000        S  First    man        True    C  Southampton    no  False
50         0       3    male   7.0      4      1   39.6875        S  Third  child       False  NaN  Southampton    no  False
59         0       3    male  11.0      5      2   46.9000        S  Third  child       False  NaN  Southampton    no  False
63         0       3    male   4.0      3      2   27.9000        S  Third  child       False  NaN  Southampton    no  False
68         1       3  female  17.0      4      2    7.9250        S  Third  woman       False  NaN  Southampton   yes  False
71         0       3  female  16.0      5      2   46.9000        S  Third  woman       False  NaN  Southampton    no  False
85         1       3  female  33.0      3      0   15.8500        S  Third  woman       False  NaN  Southampton   yes  False

네 이렇게 불린 인덱싱으로 처리한 값과 동일하게 나오는 것을 확인할 수 있습니다. 하나의 열에서 특정 여러 값을 추출할 때는 불린 인덱싱도 좋지만 이번 코딩을 살펴보니 좀 더 간략하게 만들기에는 isin()매소드가 더 간단하는 것을 확인할 수 있었습니다. 

반응형