본문 바로가기

Pandas/응용

판다스 - groupby : apply와 agg의 차이

반응형

 

1. 집계함수 기준

 

    ** func = lambda g: g.mean()

    grouped.apply(func)

전체 그룹별 집계함수

같다
    grouped.agg(func)

    grouped.agg('mean')

    grouped.컬럼.apply(func)

그룹의 컬럼별 집계 함수

같다
    grouped.컬럼.agg(func)

    grouped.컬럼.agg('mean')
    grouped.apply
    (lambda g: g.컬럼.mean())
메서드 안의 컬럼 명시

다르다
    grouped.agg
    (lambda g: g.컬럼.mean())

 

 

 

 

 

데이터 불러오기

 

 

 

 

 

 

func = lambda g: g.mean()

 

전체 그룹별 집계함수 비교

 

 

모두 동일하다.

 

 

 

 

 

 

 

그룹의 컬럼별 집계 함수

 

 

 

이 또한 모두 동일하다.

 

 

 

 

 

 

메서드 안의 컬럼 명시

 

 

분명히 다르다.

 

 

agg 메서드의 결과가 왜 이렇게 나오는지는 이전 포스팅 참조

 

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

 

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

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

steadiness-193.tistory.com

 

 

 

 

2. 개별 원소에 적용 가능 여부

 

apply 가능
agg 불가능

 

 

 

 

자세한 내용은 아래 포스팅 참조

 

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

 

판다스 - groupby : apply

가장 일반적인 Groupby 메서드의 목적은 apply이다. 아니 agg를 쓰면 되지 굳이? agg는 이전 포스팅에서 설명한 바와 같이 사용자 정의 함수를 이용할 수 있지만, 집계함수에 한해 가능하다. 즉 판다스

steadiness-193.tistory.com

 

 

 

 

 

** agg에 대한 활용은 아래 포스팅 참조

 

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

 

판다스 - groupby : aggregate

데이터 불러오기 tips의 데이터를 size 컬럼 별로 그룹화했다. (size는 1, 2, 3, 4, 5, 6 의 값으로 구분된다.) 그룹화가 어떻게 되어있는지 확인을 위해 first를 사용한다. 이번에 설명할 aggregate는 groupby..

steadiness-193.tistory.com

 

 

 

 

 

[groupby 메서드 들의 결론]

 

apply 1. 시리즈도, 데이터프레임도 받을 수 있다.

2. 개별 원소와 그룹별로도 적용 가능하다.

3. 사용자 함수 사용에 장벽이 없다.

즉, 다방면으로 사용하기 좋다
   
agg 0. 연산 가능한 컬럼만 알아서 필터링

1. 집계함수

2. [집계함수, 집계함수, ..., 집계함수]

3. {컬럼: 함수, 컬럼: 함수, ..., 컬럼: 함수}
transform 0. 연산 가능한 컬럼만 알아서 필터링

1. 기존 인덱스를 유지하며 출력

2. 1번의 장점으로 새로운 열로 추가하기 편함
반응형