Data Analyst/ML

ML - PANDAS(Condition-Filtering)

hmm06 2024. 8. 29. 23:32

Condition - 조건

- DataFrame에 조건을 추가하여 해당 조건에 부합하는 DataFrame을 출력하는 것들을 보여드리겠습니다.

- 이제 보여줄 코드들은 매우 쉬운 코드들로 연산자를 사용하여 필터링 한다 보면 될 거 같습니다.

# total_bill의 값이 30보다 큰 값들의 데이터 프레임을 가져온다.
bool_series = df['total_bill'] > 30
df[bool_series]

# 위의 코드와 같은 것이지만 아래 방법으로도 사용 가능하다.
df[df['total_bill']>30]

코드 결과

- 위의 그림과 같이 total_bill을 확인하면 30보다 큰 값들을 가져온 것을 확인 할 수 있습니다.

 

# 숫자만 가능한 것이 아닌 파이썬에서 사용하는 방식 그대로 문자열 또한 가능하다.
df[df['sex'] == 'Male']

코드 결과

- 이 또한 성별이 남성인 데이터들만 가져온 것을 확인 할 수 있습니다.


Multiple Conditions

 

  1. 조건을 얻습니다.
  2. 각 조건을 괄호로 감쌉니다.
  3. OR 연산자 | 또는 AND 연산자 &를 사용합니다.
    • OR |: 두 조건 중 하나라도 참일 경우
    • AND &: 두 조건이 모두 참이어야 할 경우
  4. ~ 연산자를 사용하여 NOT 연산을 수행할 수도 있습니다.

- 여기서의 중요한 점은 파이썬은 논리연산자를 사용할 때 "||, &&" 이렇게 사용하였으나, DataFrame에서는 문자 하나만 사용하면 됩니다.

# 1. totla_bill이 30보다 크고 남성인 데이터 출력
df[(df['total_bill'] > 30) & (df['sex']=='Male')]

# 2. totla_bill이 30보다 크고 여성이 아닌 데이터 출력
df[(df['total_bill'] > 30) & ~(df['sex']=='Male')]

# 3. day가 주말인 데이터들만 출력
df[(df['day'] =='Sun') | (df['day']=='Sat')]

 

1번 코드 결과

위의 그림은 첫번째, 두번째의 코드결과입니다.

즉, 논리연산자를 사용하여 두 개 이상의 조건을 넣어 데이터를 출력할 수 있습니다.


Conditional Operator isin()

- '.isin()' 연산자를 사용하여 특정 옵션 목록으로 필터링할 수 있습니다.

- 해당 연산자를 사용하면 출력 값은 bool(True, False) 형으로 출력이 됩니다.

- bool 값으로 데이터프레임 값 또한 출력이 가능합니다.

 

# isin 연산자 사용하여 day가 주말인 모든 인덱스의 값들을 True, False로 출력합니다.
options = ['Sat','Sun']
df['day'].isin(options)

코드 결과

 

- bool 값으로 데이터프레임 값 또한 출력이 가능합니다. 예를 들어 True인 값들만 가져오는 것입니다.(조건 부여)

# 주말인 데이터들만 가져옴
df[df['day'].isin(['Sat','Sun'])]

코드 결과


여러 Condition을 적용하는 방법을 알아보았습니다. 이상입니다.

728x90