개발은 처음이라 개발새발

파이썬으로 필터링하기 [python/pandas] 본문

파이썬/판다스

파이썬으로 필터링하기 [python/pandas]

leon_choi 2022. 8. 15. 17:05
반응형

파이썬을 통해서도 엑셀과 같이 필터링이 가능한대요. 오늘 다뤄볼 것은 특정 조건식을 작성해 이를 만족하는 값들만 뽑아낼 수 있는 불린 인덱싱(boolean indexing)에 대해 알아보겠습니다. 불린(boolean)은 시리즈 객체에 어떤 조건식을 적용하면 참(True), 거짓(False)인지를 판별하는 것인데요. 이를 토대로 참인 값들만 필터링 하는 것이 불린 인덱싱입니다.

 

오늘도 seaborn의 'titanic'예제를 활용해 불린 인덱싱을 하는 과정을 살펴보겠습니다. 

import seaborn as sns

titanic = sns.load_dataset('titanic')

# 10대 승객 찾기
mask1 = (titanic['age'] >= 10) & (titanic['age'] <20 )
df_teenage = titanic[mask1]

print(df_teenage.head(),'\n')

# 10대 미만 여성인 승객 
mask2 = (titanic['age'] < 10) & (titanic['sex'] == 'female')
df_female = titanic[mask2]

print(df_female.head(),'\n')

# 10대 미만 또는 60대 이상 승객의 age, sex, alone 열만 선택
mask3 = (titanic['age'] < 10) | (titanic['age'] >= 60 )
df_under = titanic.loc[mask3,['age','sex','alone']]

print(df_under.head(),'\n')
 survived  pclass     sex   age  sibsp  parch      fare embarked   class    who  adult_male deck  embark_town alive  alone
9          1       2  female  14.0      1      0   30.0708        C  Second  child       False  NaN    Cherbourg   yes  False
14         0       3  female  14.0      0      0    7.8542        S   Third  child       False  NaN  Southampton    no   True
22         1       3  female  15.0      0      0    8.0292        Q   Third  child       False  NaN   Queenstown   yes   True
27         0       1    male  19.0      3      2  263.0000        S   First    man        True    C  Southampton    no  False
38         0       3  female  18.0      2      0   18.0000        S   Third  woman       False  NaN  Southampton    no  False 

     survived  pclass     sex  age  sibsp  parch     fare embarked   class    who  adult_male deck  embark_town alive  alone
10          1       3  female  4.0      1      1  16.7000        S   Third  child       False    G  Southampton   yes  False
24          0       3  female  8.0      3      1  21.0750        S   Third  child       False  NaN  Southampton    no  False
43          1       2  female  3.0      1      2  41.5792        C  Second  child       False  NaN    Cherbourg   yes  False
58          1       2  female  5.0      1      2  27.7500        S  Second  child       False  NaN  Southampton   yes  False
119         0       3  female  2.0      4      2  31.2750        S   Third  child       False  NaN  Southampton    no  False 

     age     sex  alone
7    2.0    male  False
10   4.0  female  False
16   2.0    male  False
24   8.0  female  False
33  66.0    male   True

네 이렇게 예제 3개를 풀어봤는데요. 10대인 승객과 10대 미만이고 여성인 승객을 찾는 조건처럼 두개의 조건이 연결된 경우, AND(&) 연산을 활용했고 "또는"의 경우는 OR(|) 연산자를 사용했는데 이렇게 불린 인덱싱을 적용한 조건문은 .loc 함수와 함께 사용해 특정 컬럼까지 추출할 수 있습니다. 이렇게 할 수 있는 이유는 불린 인덱싱이 결론적으로 지정한 조건에서 참을 가진 인덱스(index)만을 추출하는 것이기 때문에 .loc, .iloc 와 같이 특정 값을 추출하는 데에서 인덱스 역할을 할 수 있습니다.  다음 시간에는 isin() 매소드를 활용해 필터링을 하는 것을 알아보도록 하겠습니다.

반응형