데이터 분석의 가장 흔한 작업이 「조건에 맞는 행만 추리기」입니다.
Pandas는 SQL의 WHERE 절을 매우 직관적으로 표현할 수 있게 해 줍니다.
기본 조건 필터링.
df[df["age"] > 25] — 나이 25 초과 행만.
안의 「df["age"] > 25」는 True/False의 Series이고, 그것을 인덱스로 넘기면 True인 행만 선택됩니다.
복수 조건.
df[(df["age"] > 25) & (df["city"] == "서울")] — 25 초과이면서 서울 거주.
「&(and), |(or), ~(not)」을 쓰며, 각 조건을 ( )로 감싸야 합니다(우선순위 때문에).
isin — 여러 값 중 하나.
df[df["city"].isin(["서울", "부산", "대구"])] — 세 도시 중 하나.
SQL의 IN 절과 같은 효과로, 매우 자주 씁니다.
between — 범위.
df[df["age"].between(25, 35)] — 25~35 사이.
df[df["age"].between(25, 35, inclusive="left")] — 25 포함, 35 미포함.
또 query 메서드 — df.query("age > 25 and city == '서울'") — SQL 같은 문법으로 더 읽기 쉽게 표현할 수도 있습니다.
한 줄 요약
DataFrame 필터링은 df[조건] 형식으로 합니다.
& | ~로 복수 조건, isin으로 여러 값 중 하나, between으로 범위, query로 SQL 같은 문법을 쓸 수 있습니다.
더 알아볼 것
- query() 메서드의 장단점
- SettingWithCopyWarning과 .copy()
- pd.eval — 효율적 평가