Pandas

필터링

김천종 2022. 11. 9. 22:36
반응형

데이터프레임의 데이터 중에서 특정한 조건을 만족하는 원소만 따로 추출하는 것

 

## 불린 인덱싱 ##

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
### 필터링 ###
## 불린 인덱싱 ##
# 각 원소에 대해 참, 거짓을 판별해서 불린 값으로
# 구성된 시리즈를 반환함, 이때 참인 데이터만 따로 선택
# 조건식(<, >, == 등) 사용 #
 
titanic = sns.load_dataset('titanic')
 
mask1 = (titanic.age >=10& (titanic.age < 20)
# 나이가 10이상이고 20미만인 데이터 선택, 불린(참, 거짓) 시리즈
 
df_10old = titanic.loc[mask1, :]
# 행이 mask1이고 열이 전체인 데이터프레임 만들기
 
print(df_10old.head(3))
'''
    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 
'''
# 나이가 10대인 데이터만 모인 데이터프레임
cs

 

 

 

## isin() 메소드 ##

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
## 특정 값을 가진 행 추출(isin()) ##
# isin() 메소드 사용 #
# isin() 괄호 안에 원하는 값을 넣어서 필터링한다 #
 
isin_filter = titanic['sibsp'].isin([345])
print(isin_filter)
# 'sibsp' 열에 3, 4, 5 값을 가진 행을 선택, 불린 시리즈로 반환
 
df_isin = titanic[isin_filter]
# 불린 시리즈를 만족하는 데이터프레임 만들기
print(df_isin.head())
 
'''
mask2 = (titanic.sibsp ==3)|(titanic.sibsp ==4)|(titanic.sibsp ==5)
df_1 = titanic.loc[mask2, :]
print(df_1.head())
''' 
# isin() 메소드를 사용하지 않고 불린 인덱싱을 사용해서 구현 (같은 결과)
cs

 

반응형