Filtering

정민·2024년 2월 28일

데이터분석

목록 보기
6/11

1. Filtering


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만



2. between(), isin(), isna()


  • 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] #~:부정, 결측치가 아닌 것만 보고싶다



3. and(&), or(|)


  • 두 개 이상의 조건을 결합
    and : 모두 True -> True이다
    or : 하나라도 True -> True이다
True and False # &
# 결과 : False
True or False # |
# 결과 : True
profile
데이터 공부하는 예비 데이터 분석가, 김정민입니다.

0개의 댓글