6.3.2 조건 참조

pf[조건]으로 논리 인덱싱이 가능하다. 다음 코드는 ‘중간’이 20 초과인 행을 가진 데이터프레임을 반환한다.

pf['중간'] > 20

이는 조건의 결과인 논리값이 저장된 시리즈가 반환된다. 원소 수는 행 수이다. 그러므로 조건에 대한 각 행의 논리 결과이다.

다음 코드 pf[조건]으로 조건에 맞는 행으로 구성된 데이터프레임이 반환된다.

pf[pf['중간'] > 20]

다음으로 ‘출석’이 19 이상인 행으로 구성된 데이터프레임이 반환된다.

pf[pf['출석'] >= 19]

다음처럼 조건의 조합을 기술할 수 있다.

pf[(pf['출석'] >= 19) & (pf['기말'] >= 20)]

① 세련된 조건 검색: query()

조건식이 복잡해지면 df[(...)] 문법은 괄호 때문에 읽기 어렵습니다. query()를 쓰면 SQL(데이터베이스 언어)처럼 문자열로 조건을 깔끔하게 적을 수 있습니다.

# 6.3.2 '중간' 점수가 20점 초과인 학생
pf.query("중간 > 20")

# 6.3.2 외부 변수(Python 변수)를 참조할 때는 @ 기호 사용
limit_score = 20
pf.query("중간 > @limit_score")

② 한 번에 여러 개 찾기: isin()

“A반이거나 B반인 학생”을 찾을 때, |(OR) 연산자를 여러 번 쓰면 코드가 지저분해집니다. isin() 함수에 리스트를 던져주면 매칭되는 데이터를 한 번에 쏙쏙 골라냅니다.

# 6.3.2 target_class = ['A반', 'B반']
# 6.3.2 pf[pf['반'].isin(target_class)]
서브목차