데이터 불러오기
class 별로 그룹화 했다.
[목표 : 클래스별로 일정 수 이상의 그룹만 보고 싶다]
1. len
그룹별로 길이를 구했다.
이는 누락값의 유무와 관계 없으므로 다 동일한 결과가 출력된다.
200건 이상의 데이터가 있는지에 대한 불린을 보자
First 클래스와 Third 클래스는 모든 열이 다 200건 이상 있으므로
다 True가 나왔다.
이때 Second 그룹만 없이 보고 싶을때 이용하는 것이 바로
filter 메서드 이다.
filter
총 891건의 데이터 중 184건의 데이터가 제외된
(Second 그룹은 제외된)
707행의 나왔다.
*** filter를 하니 기존 그룹용 컬럼인 class는 사라졌다.
(grouped라는 변수명 사용 때문)
2. size
size는 문제가 좀 많아 보인다.
우선 그룹별 행의 개수를 구했다.
300건 이상이 입력된 데이터 그룹을 보고자 불린을 해보았고
Third 그룹만 만족하는 것을 확인했다.
이를 필터 메서드로 해보자.
뜬금없이 891행,
즉 전체 데이터가 나왔다.
https://steadiness-193.tistory.com/36
위 포스팅 내 주의할 점에 언급한 것처럼 컬럼명을 명시하지 않아서 일까?
class로 그룹화했기에 class 컬럼을 명시했다.
불린은 정상적으로 나옴을 확인할 수 있다.
이를 바로 filter로 적용해보자
어찌된 일인지 에러가 나온다.
이는 filter를 할때는 그룹화된 컬럼(class)이 사라짐에 기인한 것으로 추측한다.
--------------------------------------------------------------------------------------------
* 참고 : 해결 방법 *
grouped 변수를 사용하지 않고, df.groupby('class')를 직접 명시
자세한 내용은 아래 포스팅 참조
https://steadiness-193.tistory.com/45
--------------------------------------------------------------------------------------------
그렇다면 다른 컬럼을 기준으로 filter하면 어떻게 될까?
age 컬럼을 기준으로 filter 하니 정상적으로 나옴을 확인했다.
그러나 이는 굉장히 비효율적이다.
그 이유는 그냥 1번의 len을 쓰면 컬럼을 명시할 필요도 없고
에러도 나지 않으며
size와 len은 행의 개수를 세는 것으로 본다면 비슷하기 때문이다.
따라서 오류와 번거로움이 혼재될 수 있는 size는
행의 개수 필터링에선 지양하는 것으로 한다.
(또는 위 해결방법을 이용한다.)
3. count
count가 다소 까다로운 이유는 누락값을 세지 않기 때문이다.
따라서
이렇게 무작정 200개 이상 누락값을 제외하고
입력된 그룹을 보여달라는 명령은 에러가 나올 확률이 높다.
(당연한 결과다.)
차근히 보자
입력값이 200개가 넘어야하는 조건에는
그룹별로 컬럼별로 상이하다.
예를 들어 Third 그룹을 출력하고자해도
deck이 False이기 때문에 출력할 수 없는 것이다.
이럴때 이용하는 것이 바로
https://steadiness-193.tistory.com/35
위 포스팅에서 설명한 'agg 메서드 안의 기준 컬럼'이다
agg 메서드 안에 컬럼을 명시하면
그 컬럼을 기준으로 다른 컬럼의 값들도 통일된다.
지금은 age 컬럼의 값인 186, 173, 355로 모두 행별 통일되었다.
이를 비교조건에 넣으면
Third 그룹은 모두 True가 나오게 된다.
filter도 agg의 기능과 맥을 같이하기 때문에
이를 이용하면
age컬럼을 기준으로 조건에 모두 True인
Third 그룹의 데이터만 볼 수 있는 것이다.
(491행)
[정리]
groupby 기준
1. 행의 개수를 필터링해서 보고자할땐 'len'을 사용하자.
* 또는 groupby객체를 변수에 넣지 말고 그대로 이용하자
2. 하나의 컬럼을 기준으로 입력값의 개수를 필터링할 땐
'count'를 이용하자
** 컬럼명을 반드시 기입할 것
'Pandas > 응용' 카테고리의 다른 글
판다스 - groupby : transform (0) | 2020.06.23 |
---|---|
판다스 - groupby : apply (0) | 2020.06.23 |
판다스 - groupby : aggregate, size (0) | 2020.06.22 |
판다스 - groupby : aggregate (agg 메서드 안의 기준 컬럼, count 이용) (0) | 2020.06.22 |
판다스 - groupby : aggregate (0) | 2020.06.22 |