# 본 내용은 " [나도코딩] - 파이썬 활용편(5) 데이터분석 및 시각화 " 강의를 듣고, 복습하고 공부한 내용을 다루었습니다.
오늘 포스팅할 내용은 다음과 같습니다.
Pandas #5. 데이터 필터링
09 데이터 선택(조건)
=> 조건을 이용해 데이터를 필터링 하는 방법에 대해 학습합니다.
데이터 필터링은 내가 원하는 조건을 걸어서 원하는 정보를 얻을 수 있게 하는 작업입니다.
평상시대로 학생의 키를 보여주라고 할 수 있지만,
키가 180cm이상인 학생의 키만 보여주라고 할 수도 있을 것입니다.
이 뿐만 아니라 점수에서도 볼 수 있습니다.
국어 점수가 70점 이상인 학생은 Pass를 준다고 할 경우, Pass를 받을 학생이 누구인지 확인할 수 있어야 합니다
이러한 경우, 조건필터링이 필요하다는 사례가 되겠습니다.
지금부터는 조건 필터링에 대해 알아보겠습니다.
09 데이터 선택 (조건)
조건을 걸어서 데이터를 선별하는 필터링 작업
9-1) 한 가지 조건의 경우
먼저, 데이터를 import해 주도록 하겠습니다.
먼저 키가 185 이상인 학생들만 추출하고자 합니다.
df['키'] >=185라는 부등호를 사용해 입력해 보겠습니다.
그렇게 했더니, 키가 185이상인 학생이 추출되는 것이 아닌, 학생들의 키가 185 이상인지의 여부를 T/F형태로 나타내고 있습니다.
단순히 데이터 셋에다 컬럼을 넣고 칼럼에서 해당 값보다 크다고 정의하는 것은 추출하는 경우에는 옳지 않네요.
대신, 단순히 185보다 크냐 작냐를 논할 경우에는 이 방법이 맞다고 볼 수 있겠습니다.
그러면 185이상의 키를 추출하려면 어떻게 해 줘야 할까요?
바로 아래와 같이 변수를 선언하거나,
아래와 같이 리스트를 한 번 더 감싸준 형태로 작성하여야 합니다.
그렇지 않으면 단순히 시리즈 형태로 표시되기 때문이지요.
참고사항으로 다음 표와 같이 '~'표시를 사용한다면
해당 결과를 역으로 표시해 주기도 합니다.
즉, 키가 185 미만인 사람을 나타낼 때 썼겠군요.
좀 더 알아볼까요?
키가 185이상인 학생이지만, 모든 과목의 정보가 필요치 않은 경우도 존재합니다. 이 경우에는 특정 칼럼을 선택해 필터링을 할 수도 있습니다.
예를 들어, 키가 185 이상인 학생의 이름과 수학, 과학 점수를 가져오고 싶다면
위와 같이 .loc()함수를 이용해 이름에 대한 위치 값을 반환하는 함수를 사용합니다.
(참고사항으로 .loc()함수는 4. 데이터 선택에 설명되어 있습니다.)
먼저 df테이블에서 키가 185이상인 학생만 필터링하고 그 안에서 이름과 수학, 과학점수에 대한 칼럼을 선택해서 데이터 프레임에 나타내어 줍니다.
이렇게 한 가지 필터링의 경우에는 이전 위치를 반환하는 .loc()함수를 숙지하고, 연산자를 알고 있다면 그렇게 크게 어려운 부분은 없습니다.
9-2) 두 가지 조건의 경우
위 사례처럼 한 가지 조건만을 이용하는 경우, 즉 수학 점수가 80점 이상인 학생을 필터링하는 경우도 있지만
데이터를 사용하다 보면 수학점수가 80점 이상이면서 국어 점수가 70점 이상인 학생은 누가 있을까? 와 같이 사용하는 경우도 매우 많습니다.
한 가지 조건에서 몇가지만 추가로 알고 있으면 두 가지 조건을 이용해 필터링하는 것도 크게 어렵지 않습니다.
그러면 두 가지 조건을 이용해 필터링을 하고 싶을 경우에는 어떻게 해야 될까요?
1) '&' AND조건
- & 조건은 AND 조건으로 불리며, '이면서'의 의미를 갖습니다. 국어 점수가 80점 이상이면서, 수학 점수가 70점 이상인 학생을 구할 때 쓸 수 있습니다.
- 아래 예시로, 키가 185 이상이면서 학교가 북산고등학교인 학생의 명단을 출력해 보았습니다.
- 소괄호는 생략해도 되나, 편의상 헷갈리지 않게 하기 위해 소괄호를 넣었습니다.
- 파이썬에서 같다는 표시는 '=='인 것에 주의해 줍니다.
- .loc함수를 여기서 사용했습니다. 레이블 명으로 칼럼을 찾는 것이기 때문입니다.
2) '|' OR조건
- |조건은 OR조건이라고 불리며, '이거나'의 의미를 갖습니다. 국어 점수가 80점 이상이거나 수학 점수가 70점 이상인 학생을 구할 때 쓸 수 있습니다.
- 둘 중 하나의 조건만 만족하여도 성립합니다.
- 아래 예시로, 키가 170 미만이거나 키가 200 초과인 학생의 명단을 구해보았습니다.
- 즉, 키가 170부터 200까지인 학생은 표에 출력되지 않을 것입니다.
9-3) STR함수
STR함수, 즉 문자열 함수는 문자에 대한 필터링을 가능하게 해주는 함수입니다.
대표적으로 str.contains()함수, str.startswith()함수가 있습니다.
그렇다면 마지막으로 str함수에 대해 살펴보도록 하겠습니다.
1) 특정 글자가 들어가는 데이터를 조회하고 싶을 경우 (str.contains)
- 먼저 특정 글자가 들어가는 데이터를 조회하고자 할 경우 사용됩니다.
예를 들어, 위 데이터 프레임에서 이름에 '태'자가 들어가는 사람을 조회를 해 보겠습니다.
먼저 filt라는 변수명을 주고, df['칼럼명'].str.contains('포함하는 글자') 공식으로 적어보았습니다.
그렇게 했더니, 다음과 같이 '태'자가 들어가는 사람의 정보만 출력됨을 확인할 수 있습니다.
2) 첫 글자가 특정 글자인 데이터를 조회하고 싶을 경우 (str.startswith)
- 이 경우에는 첫 글자가 특정 글자인 데이터를 조회하고자 할 경우 유용합니다.
예를 들어, 상품 데이터프레임에서, 제품종류칼럼에서 유제품 종류를 검색하고자 할 경우,
df['제품종류'].str.contains('유')라고 검색한다면, 유제품종류만 나올 것입니다.
물론, '유'자로 시작하는 다른 제품군이 없어야 한다는 전제는 붙겠습니다.
앞선 예에서 다른 예로 보자면 다음과 같겠습니다. 이름 칼럼에 '송'자로 시작하는 이름을 조회하고자 할 경우 사용될 수 있습니다. 즉, 송씨 성을 가진 사람을 조회할 경우 다음과 같은 결과가 출력됩니다.
오늘은 데이터 필터링에 대한 공부를 하였습니다.
데이터 필터링은 저번 데이터 선택과 함께 실무에서 꽤나 잘 쓰이고,
데이터를 조회할 때, 어떻게 필터를 거느냐에 따라 값이 달라지기 때문에 그에 대한 인사이트도 얻는 것이 중요하겠다고 생각하였습니다.
또한, 이러한 인사이트를 기르기 위해 다양하고 많은 데이터를 접해보고 조회해봄으로써 데이터에 '익숙해졌다'라는 느낌이 들 수 있도록 연습할 계획입니다.
다음 학습 내용 (Pandas #6)
10 결측치
11 데이터 정렬
감사합니다.
'Python > Pandas' 카테고리의 다른 글
[파이썬 Pandas] 7. 데이터 수정 (0) | 2022.08.19 |
---|---|
[파이썬 Pandas] 6. 데이터 결측치 처리와 정렬방법 (0) | 2022.08.16 |
[파이썬 Pandas] 4. 데이터 선택 (0) | 2022.08.09 |
[파이썬 Pandas] 3. 데이터 확인 (0) | 2022.08.05 |
[파이썬 Pandas] 2. 파일 저장 및 열기 (0) | 2022.08.04 |
댓글