https://steadiness-193.tistory.com/130
위 포스팅에선 fare 컬럼을 기준으로 상위 50개 행을 그룹별로 추출해
데이터프레임으로 반환했다.
이번엔 기준 컬럼을 자유롭게 바꿔보고, 상위 N개의 행도 원하는 만큼 시리즈로 뽑아내보자.
이번 포스팅에선 value_counts가 아니라 nlargest를 사용한다.
nlargest에 대한 상세 내용은 아래 포스팅 참조
https://steadiness-193.tistory.com/218
데이터 불러오기
함수 정의
위 함수는 그룹객체에 적용가능하며
그룹별로 key_column을 기준으로 상위 N개의 시리즈를 추출한다.
그룹 객체 정의
승객 등급별로 묶은 객체를 grouped로 정의했다.
grouped에 함수 적용
요금을 많이 낸 승객을 등급별로 7명씩 뽑아냈다.
원리 파악
1등급인 first 그룹에서
fare 컬럼의 상위 7개를 가져오는 것이다.
그룹 객체를 원하는 컬럼으로 한번 더 그룹핑 한 뒤
fare 컬럼 기준으로 상위 N개 시리즈 추출
위 함수는 그룹객체를 인풋으로 받는다.
단, 그룹객체를 다시 한번 grouping_col로 그룹핑한 뒤
그 그룹핑된 객체의 fare 컬럼을 기준으로
상위 N개를 시리즈로 추출한다.
함수 실행
승객 등급으로 그룹핑한 grouped를
각 그룹별로
다시 한번 성별로 그룹핑한 뒤
그 그룹핑한 객체의 fare 상위 3개씩 뽑아냈다.
만약 다시 한번 그룹핑하는 컬럼이 많은 행을 포함한다면?
나이대 컬럼 추가
get_groups_fare_top7 함수 실행
위 결과는 등급과 나이대별로 요금을 많이 낸 상위 3명을 뽑아낸 것이다.
그게 아니라, 등급별로 요금을 많이 낸 상위 나이대 그룹을 찾고 싶다면
단순히 합계를 붙여주면 된다.
get_groups_fare_sum_top7 실행
위 결과를 해석하자면
1등급 좌석에선 30대-20대-40대 순으로 낸 요금의 합이 높았다.
** 참고
시리즈가 아니라 데이터프레임 형태로 보고 싶다면 return에 pd.DataFrame을 이용하면 된다.
이처럼 다양하게 함수를 정의해서 그룹객체를 응용할 수 있다.
'Pandas > 응용' 카테고리의 다른 글
판다스 - 라벨링(Labeling) (0) | 2020.08.24 |
---|---|
판다스 - datetime : dt 연산자 활용 (0) | 2020.08.13 |
판다스 - 값이 높은 n번째까지 출력 : nlargest (0) | 2020.08.09 |
판다스 - map : dict.get (0) | 2020.08.09 |
판다스 - map (0) | 2020.08.09 |