본문 바로가기

카테고리 없음

파이썬을 엑셀처럼 사용하기 (4): 데이터 필터링하기, 비교 연산자 pandas filtering

파이썬을 엑셀처럼 사용하기 시리즈

 (1) 엑셀이 있는데 왜 파이썬을 배워야 하지?

 (2) 데이터 열기 pandas read_excel()

 (3) 데이터 정렬하기 pandas sort_values()

 (4) 데이터 필터링하기, 비교 연산자 pandas filtering

 (5) 사칙연산하기 pandas arithmetic

 (6) 데이터 합치기 pandas merge()

 (7) 피벗 테이블 만들기 pandas pivot_table()

 실습하기 위해서는 파이썬 아나콘다와 주피터 노트북이 설치되어있어야 합니다. 

  - [파이썬] 파이썬 아나콘다 설치 방법, 파이썬 설치 방법

  - [파이썬] 주피터 노트북(jupyter notebook) 사용법

✔ 실습 데이터는 제 깃헙에서 받을 수 있습니다. 데이터1, 데이터2


이번에는 데이터에서 '지점'이 A이면서 '고객타입'이 회원인 '성별' 여성 고객의 데이터만 필터링하려 합니다. 엑셀에서는 이 작업이 다음과 같이 이루어집니다.

조건에 따른 필터링 작업 순서

- [데이터 > 필터] 선택

- [머리글 '지점'에서 화살표 클릭 > 목록에서 값 'A' 클릭 > 확인]

- [머리글 '고객타입'에서 화살표 클릭 > 목록에서 값 '회원' 클릭 > 확인]

- [머리글 '성별'에서 화살표 클릭 > 목록에서 값 '여성' 클릭 > 확인]

필터링 결과는 아래와 같습니다. 이 작업을 파이썬 판다스를 이용하면 어떻게 할 수 있는지 알아보겠습니다.

 

 

데이터 필터링 하기

판다스에서 데이터를 필터링하는 방법은 세 가지 단계를 거칩니다.

1) 필터링할 열(컬럼)을 선택합니다.
2) 컬럼의 데이터와 조건을 비교합니다. 조건을 만족하는 경우에는 True, 아닌 경우에는 False 반환합니다.

3) 비교 결과를 이용해서 데이터프레임에서 데이터를 필터링합니다.

 

지점 컬럼의 값이 A인 데이터를 필터링해보겠습니다.

# 지점 컬럼의 값이 A와 같은지 비교합니다.
condition_A = (sales['지점'] == 'A')
# 데이터프레임에서 위의 조건을 만족하는 데이터만 필터링합니다
sales_from_A = sales[condition_A]
sales_from_A

눈치가 빠르분이라면 엑셀과 달리 파이썬에서는 같다는 표현을 등호(=) 두 개로 나타낸다는 차이점을 알아채셨을 겁니다. 간단하게 표로 정리하면 이렇습니다.

 

엑셀과 판다스의 비교 연산자 차이점

구분 엑셀 파이썬
같다 = ==
크다 > >
작다 < <
크거나 같다 >= >=
작거나 같다 <= <=
같지않다 <> !=

총 6가지 비교 연산자 중에 '같다'와 '같지 않다'만 서로 다릅니다.

 

계속 이어서 나머지 조건들도 동일한 방식으로 입력하고 결과를 확인해보겠습니다.

condition_member = (sales['고객타입'] == '회원')
sales_member = sales[condition_member]
sales_member

 

condition_female = (sales['성별'] == '여성')
sales_female = sales[condition_female]
sales_female

 

각각의 조건에 맞게 데이터가 잘 필터링된 것을 확인할 수 있습니다. 이제 이 필터링 조건들을 한 번에 적용하는 일만 남았습니다.

 

다수의 조건을 동시에 만족하는 데이터 필터링하기

컴퓨터에게 "지점은 A이면서 고객타입은 회원인 성별 여성의 데이터를 필터링해줘"라고 전달해보겠습니다. 판다스에서 복수의 조건을 입력하는 방법은 &와 |를 이용하는 것입니다. &는 and를 |는 or을 의미합니다.

sales_all_condition = sales[condition_A & condition_member & condition_female]
sales_all_condition

처음에 보셨던 엑셀로 필터링한 결과와 같은 결과가 나온 것을 확인할 수 있습니다. 이렇게 한번 코드를 작성해 놓으면 다음부터는 순식간에 내가 원하는 데이터만 확인할 수 있다는 장점이 있습니다.

 

 

-이 글은 아나콘다(Anaconda3)가 설치된 환경을 기준으로 작성되었습니다.