반응형
PANDAS 그룹별 평균 구하기
통계분석에서 전체 평균을 구하는 것뿐만 아니라, 그룹간의 평균을 구하고 이를 비교하는 것은 매우 중요한 주제중 하나라고 할 수 있습니다. sas에서는 proc means by 구문을 통해 구할 수 있고, R에서는 aggregates 함수 등을 이용해 구할 수 있는데요. 파이썬에서는 R의 Data.Frame 과 비슷한 형태로 자료를 핸들링 할 수 있는 pandas라는 패키지가 있습니다. 이 패키지 함수를 통해 그룹별 평균을 구하는 방법을 알아보겠습니다.
cluster org time
1 a 8
1 a 6
2 h 34
1 c 23
2 d 74
3 w 6
예를 들어, 위와 같은 데이터가 있다고 가정합시다. 참고로 이걸 파이썬에서 읽어오는 방법은 아래와 같이 하시면 됩니다.
import pandas as pd data = pd.DataFrame({"cluster" : [1,1,2,1,2,3], "org":['a','a','h','c','d','w'], "time":[8,6,34,23, 74,6]})
아래 구문은 'cluster' 변수를 그룹으로 하여 모든 숫자형 변수의 평균을 계산해 줍니다. as_index=False 구문은 이 그룹을 인덱스로 지정할 것인지 여부인데, 인덱스로 지정하면 두 번째 테이블처럼 그룹이 인덱스로 들어가게됩니다.
data.groupby(['cluster'], as_index=False).mean()
cluster | time | |
---|---|---|
0 | 1 | 12.333333 |
1 | 2 | 54.000000 |
2 | 3 | 6.000000 |
time | |
---|---|
cluster | |
1 | 12.333333 |
2 | 54.000000 |
3 | 6.000000 |
아래 구문은 cluster와 org를 그룹으로 하여 평균을 계산해줍니다. 예를 들어, cluster가 지역, org가 성별이라고 생각해볼 수 있습니다. 그러면 이 구문은 지역과 성별 별로 변수들의 평균을 구하는 구문이 됩니다.
data.groupby(['cluster', 'org'], as_index=False).mean()
cluster | org | time | |
---|---|---|---|
0 | 1 | a | 7 |
1 | 1 | c | 23 |
2 | 2 | d | 74 |
3 | 2 | h | 34 |
4 | 3 | w | 6 |
반응형
'Tools > Python' 카테고리의 다른 글
Python - 폴더 파일 리스트 가져오기 (4) | 2017.10.31 |
---|---|
Python - Pandas 변수 정렬하기 (0) | 2017.10.24 |
Python으로 빈도표 만들기 (Pandas Crosstab) (0) | 2017.10.19 |
Python - 강화학습 Q-learning on Non-deterministic World (1) | 2017.09.19 |
Python - 강화학습 Q-Learning 기초 실습 (0) | 2017.09.18 |