pd.DataFrame에서 Filtering은 조건에 부합 (Boolean값이 True)하는 row만 남기는 과정
df[조건] # boolean-series : [True, False, ..., True]
# 예제 데이터프레임 생성
import pandas as pd
data = {
'Name' : ['철수', '영희', '흥민', '범근'],
'Age' : [25, 30, 35, 40],
'City': ['New York', 'Los Angeles', 'New York', 'Chicago']
}
df = pd.DataFrame(data)
# df.Age > 30 : age_over_30
df.Age > 30 # 시리즈에 조건을 걸어주면 boolean형이 나옴

con = df.Age>30
df['age_over_30'] = con # 조건에 부합하는 열 생성
df

# filter result
df[con] # 조건에 부합하는 row만

- from_n 이상, to_n 이하
df['col'].between(from_n, to_n)- 특정 열(col)의 값이 주어진 목록(['item1', 'item2'])에 포함되어 있는지 여부
df['col'].isin(['item', 'item'])- 특정 열(col)의 값이 결측치(NA)일 경우 True, 아닐 경우 False를 반환
df['col'].isna()
# titanic btw age
import seaborn as sns
df = sns.load_dataset('titanic')
df.head()

# age 20 이상, 22이하 = between(20,22)
con = df.Age.between(20,22) #boolean
df[con].head()

# 조건이 잘 들어갔나 확인
df[con].age.value_counts()
# 20이상 22미만이 필터링 된 것을 볼 수 있음

# isin embarked
# isin은 범위로 정하는 것이 아님, 리스트 형태로 필터링
df.embarked.value_counts()

con1 = df.embarked.isin(['S' , 'C'])
df[con1].embarked.value_counts()

#isna : 결측치가 있으면 True
con2 = df.deck.isna()
df[~con2] #~:부정, 결측치가 아닌 것만 보고싶다

- 두 개 이상의 조건을 결합
and : 모두 True -> True이다
or : 하나라도 True -> True이다
True and False # &
# 결과 : False
True or False # |
# 결과 : True