본문 바로가기
데이터분석/Pandas&Numpy

pandas groupby 메서드로 집계 메서드 사용하기(agg포함)

by ADELA_J 2023. 7. 13.

<집계>

 

수집한 데이터를 바탕으로 평균/합 등을 구하여 값을 도출해 내는 것

- 전체 데이터를 요약, 정리하여 볼 수 있기 때문에 분석이 훨씬 편해진다.

- groupby 메서드로 평균값을 구하는 과정을 통해 데이터 집계가 무엇인지 알아보기

 

 

▼ year 열을 기준으로 데이터를 그룹화한 다음 lifeExp 열의 평균을 구한 것.

△△△△위에서 groupby메서드가 어떤 과정을 통해서 집계되는지 알아보기▼▼▼▼▼

 

1. year 열의 데이터를 중복없이 추출한 것. groupby 메서드에 열 이름을 전달하면 이런 '분할'작업이 먼저 일어난다.

 

2.  연도별 평균값 구하기.

▶ 그러기 위해서 각 연도별 데이터를 추출, 1952년의 데이터를 추출한 것이다. 

  - 이 과정을 '반영' 작업의 한 부분

 

3. 위에 2번에서 추출한 1952년의 데이터에서 lifeExp열의 평균값을 구하기

  -  이 과정도 '반영'작업의 한 부분임.

4. 2~3번을 반복해서 다른 연도의 평균값을 모두 구하기

 - 이거까지가 '반영' 작업

 

5. 그리고 연도별로 계산한 lifeExp의 평균값합치기  ▶ '결합' 작업

 

<groupby메서드와 함께 하는 집계 메서드..☆★>

count 누락값을 제외한 데이터 수 반환
size 누락값을 포함한 데이터 수 반환
mean 평균값
std 표준편차
min 최솟값
quantile(q=0.25) 백분위수 25%
quantile(q=0.50) 백분위수 50%
var 분산 
sem 평균의 표준편차
describe 데이터 수, 평균, 표준편차, 최소값, 백분위수(25,50,75%), 최댓값 모두 반환
first 첫 번째 행
last 마지막 행
nth n번째 행

▶ 집계 메서드로 원하는 값을 계산할 수 없으면 직접 함수를 만들어서 써야함.

  ▶▶▶▶▶ 사용자 함수  + groupby 메서드 = agg 메서드 이용해야함  예시는 아래 ▽▽

 

<평균값을 구하는 사용자 함수와 groupby 메서드>

 

1. 열의 평균값을 구하는 함수 만들어줌 > 하나씩 더해서 길이 n 으로 나눠주기

2.  그래서 agg 메서드를 사용한 것.  사용자 함수 my_mean을 적용해줬지만 결과를 보면 mean이랑 똑같다

 

<인자값 2개를 줘서 쓰는 사용자 함수 + groupby 메서드>

1. 2개의 인잣값을 받는 사용자 정의함수를 만들어보겠다. 평균에 두번째 인자값을 빼는 함수다

 

2. 연도별 평균 수명 - 전체 평균 수명을 빼봤다. 인잣값의 수 만큼 전달하니 그대로 반환이 되었다.

 

<여러 개의 집계 메서드를 한 번에 사용하기>

물론 describe 도 있지만 거기에 포함되어 있지 않은 다른 집계 메서드를 한꺼번에 사용하고 싶다면?

▶ 리스트나 딕셔너리에 담아 agg 메서드에 전달하면 된다.

 

▼ 딕셔너리는 key : 열 이름 / value : 집계 메서드로 전달해서 각기 따로 할 수 있다.