타이타닉 데이터프레임을
pclass와 성별 컬럼으로 그룹화
1. 하나의 컬럼
그룹별 나이를, 그룹별 나이의 합으로 나누고 싶다면?
방법1. apply와 lambda 함수 이용
멀티인덱스의 시리즈로 나왔다.
보기엔 편할 수 있으나 굳이 인덱스까지 필요없다면
방법2. 컬럼명.apply 또는 컬럼명.transform 이용
좌,우 두 개의 결과는 동일하다.
apply와 transform에 대한 내용은 아래 포스팅 참조
https://steadiness-193.tistory.com/42
2. 두개의 컬럼
그룹별 나이를 그룹별 요금으로 나누려면?
SeriesGroupBy끼리는 나눌 수 없음
transform도 에러 발생
방법1. apply 이용
groupby에서 만능인 apply를 이용하면 원하는 값을 얻을 수 있다.
다만 멀티인덱스의 시리즈로 출력되니
이후 전처리가 다소 귀찮게 느껴진다.
방법2. 함수 정의 + apply
간단하지만 다재다능한 함수를 사용하자.
위 함수는 그룹별 나이와 그룹별 요금을 나눠서
div라는 새로운 컬럼을 추가해 데이터프레임을 반환한다.
결과를 보면
그룹별로 연산된 div 컬럼이 생성된 것을 볼 수 있다.
이제 div컬럼만 선택하면 원하는 값만 가져올 수 있는 것이다.
사실 두개의 컬럼 자체만을 이용한다면 그룹의 기능은 없다.
그냥 데이터프레임의 컬럼간 나누기를 한 것과 다르지 않기 때문이다.
3. 그룹객체와 apply의 진가
그룹별 나이를 그룹별 나이의 합으로 나누려면?
그룹별 나이를 그룹별 요금의 합으로 나누려면?
위 예시는 임의로 만든 것이다.
나이를, 그 그룹별 나이의 합으로 나누었다.
나이를, 그 그룹별 요금의 합으로 나누었다.
원본데이터프레임이 아니라 함수가 적용된 시리즈만 받아오려면
위 1번 예시의 lambda를 이용하거나
return 할때 컬럼명을 적어서 가져온다.
'Pandas > 응용' 카테고리의 다른 글
판다스 - groupby : 집계함수를 활용한 뒤 데이터프레임 분석 (0) | 2020.07.15 |
---|---|
판다스 - groupby : 그룹 객체별 상위 N개의 행만 추출 (0) | 2020.07.14 |
판다스 - groupby : 컬럼 선택 (SeriesGroupBy, DataFrameGroupBy) (0) | 2020.07.12 |
판다스 - groupby : 멀티인덱스, idxmax 활용 (0) | 2020.07.08 |
판다스 - 콤마(,) 로 구분된 컬럼에서 원하는 데이터 추출하기 (0) | 2020.07.08 |