머신러닝 및 딥러닝/Python

[파이썬] 데이터프레임 특정 조건에 맞는 값 추출하기

삡삐in오즈 2022. 8. 22. 13:33
728x90
반응형

 

 

판다스 데이터프레임을 사용하여 데이터를 살펴볼 때 자주 필요한 필터링에 관한 글입니다.

 

 

판다스 라이브러리 부르고 샘플 데이터 입력하기:

import pandas as pd

data = {'name': ['Harry Potter', 'Draco Malfoy', 'Hermione Granger', 'Ron Weasley', 'Luna Lovegood'],
'age': [12, 12, 12, 12, 11],
'house': ['Gryffindor', 'Slytherin', 'Gryffindor', "Gryffindor", 'Ravenclaw'],
'grade': [80, 78, 99, 50, 60]}

df = pd.DataFrame(data)
df.head()

샘플 데이터 - 해리포터 캐릭터들

 

 

#1. 한 칼럼 (열)에 조건이 맞는 행 추출하기

'house' 행 값이 'Gryffindor'와 일치(==)하는 행 추출하는 방식입니다. 

# 조건이 맞는 행 추출하기
df.loc[df['house'] == 'Gryffindor']

그리핀도르 친구들

 

반대로 그린핀도르가 아닌 친구들을 추출하고 싶을 경우 '!=' operator를 사용하면 됩니다.

 

df.loc[df['house'] != 'Gryffindor']

 

 

+ 그 외 파이썬 Operators

파이썬 operators 출처: devopsschool

 

 

 

#2. 한 열에서 필터링 조건이 하나 이상일 때

한 열에서 다양한 값을 사용하여 필터링할 경우, 리스트와 isin()을 통해 필터링 할 수 있습니다.

houses = ['Gryffindor', 'Ravenclaw']
df.loc[df['house'].isin(houses)]

#또는 바로
df.loc[df['house'].isin(['Gryffindor', 'Ravenclaw'])]

 

tilde '~'를 사용하여 반대인 경우도 쉽게 출력할 수 있습니다.

df.loc[~df['house'].isin(houses)]

 

 

 

#3. 여러 가지 조건이 있을 경우

 

여러 열에서 다양한 조건으로 필터링할 경우 파이썬의 연산자를 사용하여 필터링이 가능합니다. 

 

11살이며 기숙사가 그리핀도르나 래번클로인 이 두 가지 조건을 모두 충족하는 행 추출하기

df.loc[(df['age'] == 11) & df['house'].isin(['Gryffindor', 'Ravenclaw'])]

 

Or 기호인 '|' 을 이용하여 두 가지 조건 중 하나라도 맞는 행 추출하기

 

점수가 80점 이하이거나 기숙사가 그리핀도르가 아닌 친구들

df.loc[(df['grade'] < 80) | (df['house'] != 'Gryffindor')]

 

 


 

 

728x90
반응형