본문 바로가기

Pandas/응용

판다스 - groupby : aggregate

반응형

데이터 불러오기

 

 

 

 

tips의 데이터를 size 컬럼 별로 그룹화했다.

(size는 1, 2, 3, 4, 5, 6 의 값으로 구분된다.)

 

 

 

 

 

 

그룹화가 어떻게 되어있는지 확인을 위해 first를 사용한다.

 

 

 

 

 

 

이번에 설명할 aggregate는 groupby에서 유용하게 쓰인다.

 

 

 

 

[agg() 메서드]

 

1. 집계 연산을 처리하는 사용자 정의 함수를 그룹 객체에 적용

 

2. 연산 가능한 컬럼만 알아서 집계해 나타내 줌

(transform 메서드와 같은 기능)

 

3. 집계함수, list(집계함수), {컬럼:함수}

 

 

 

 

번호별로 살펴보자

 

 

 

 

1. 집계 연산을 처리하는 사용자 정의 함수

 

최대값에서 최소값을 뺀다.

 

 

사이즈별로 total_bill 컬럼의 최대값에서 최소값을 뺀 결과이다.

 

 

 

 

 

 

 

 

2. 연산 가능한 컬럼만 알아서 집계해 나타내 줌

 

위의 사용자 정의 함수를 전체 grouped 객체에 적용해보자

 

 

2개의 컬럼만 나왔다.

 

연산이 불가능한 문자열이 담긴 컬럼 3개

(smoker, day, time)는 나오지 않고

 

연산 가능한 total_bill, tip컬럼만 집계되어 나왔다.

 

나중에 나올 apply와 다른 점이기도 하다.

 

 

 

 

 

 

 

 

3. 집계함수, list(집계함수), {컬럼:함수}

 

기본적으로 agg() 안에 집계함수를 집어 넣어, 결과를 볼 수 있다.

 

 

그룹별, 컬럼의 최대값을 나타낸다.

 

 

그런데 이는 agg() 없이 그냥 사용할 수 있다.

 

 

 

위의 결과와 동일하다.

 

 

 

사실

 

agg() 메서드의 강점은  list(집계함수), {컬럼:함수} 에 있다.

 

 

 

 

 

 

list(집계함수)

 

 

리스트 안에 집계함수를 넣으면

 

각각의 열에 여러개의 함수를 일괄 적용할 수 있다.

 

 

 

 

 

 

만약 컬럼별로 다른 함수를 적용하고 싶다면

 

{컬럼:함수} 의 딕셔너리 형태를 이용한다.

 

 

 

{컬럼:함수}

 

 

 

total_bill 컬럼에는 최대값을 요청하고

 

tip 컬럼에는 평균값을 요청해 받았다.

 

 

 

 

함수를 변수에 넣고 진행해도 문제 없다.

 

 

 

 

 

agg() 메서드는 위에서 본 바와 같이

연산 가능한 컬럼만 보여주는 것,
[집계함수, 집계함수...],
{컬럼명: 집계함수, 컬럼명: 집계함수}

위 세가지 기능을 사용하고자 할 때 매우 유용하다.

 

 

 

agg 메서드 이용할 때 주의할 점은 아래 포스팅 참조

 

https://steadiness-193.tistory.com/35

 

판다스 - groupby : aggregate (agg 메서드 안의 기준 컬럼, count 이용)

데이터 불러오기 C 컬럼의 초성별로 그룹화 했다. count 각 컬럼별 누락값을 제외한 값을 셌다. 1보다 큰 값을 가지는 불린 데이터프레임도 나타냈다. 여기서 agg() 메서드를 이용해보자 위의 결과��

steadiness-193.tistory.com

 

반응형