빅데이터 분석기사/작업 유형 1 (pd)

그룹별 통계값 구하기

유방울 2023. 5. 12. 17:19

그룹별 맥주, 와인 소비량

[] -> 시리즈

[[]] -> 데이터프레임, 여러개 가능

# [2-55] 대륙별 맥주 소비량 평균은?
# ['맥주'] 했을 때 시리즈
# [['맥주']] 목록을 줄 때 데이터프레임
# [['맥주','와인']] 여러개도 가능
df.groupby('대륙')[['맥주','와인']].mean()

대륙별 맥주량 평균 temp 저장

-> 맥주 평균보다 큰 데이터프레임 추출

# [2-56] 전세계 맥주 소비량 평균보다 많은 맥주를 소비하는 대륙은?
temp = df.groupby('대륙')[['맥주']].mean() 
temp[temp['맥주'] > df['맥주'].mean()]

agg([통계 메서드])  여러개 통계 함수 사용시

# [2-57] 대륙별 맥주와 와인 소비량의 평균, 중앙값, 최대값은?
# 여러개 통개함수 사용시 agg() 애그리게이션 
df.groupby('대륙')[['맥주','와인']].agg(['mean','median','max'])
  • DataFrame.pivot_table(index=행방향컬럼, columns=열방향컬럼, values=집계대상컬럼, aggfunc=구할 통계값)

피벗테이블

# [2-58] pivot_table을 사용하여 대륙별(index), '맥주'와 '와인'의 mean, median, max 값을 구합니다.
# index, columns 범주형 -> 몇가지로 나뉨
# values 연속형 -> 여러가지로
# 결과 참조
df.pivot_table(index='대륙',values=['맥주','와인'], aggfunc=['mean','median','max'])

	mean	median	max
맥주	와인	맥주	와인	맥주	와인
대륙						
AF	61.471698	16.264151	32.0	2.0	376	233
AS	37.045455	9.068182	17.5	1.0	247	123
EU	193.777778	142.222222	219.0	128.0	361	370

groupby 로도 피벗테이블과 유사한 결과 도출 가능

# [2-60] groupby를 사용하여 대륙별, '맥주'와 '와인'의 mean, median, max 값을 구합니다.
# 피벗테이블과 비슷함
# 하지만 통계 메서드와 그룹핑한 것이 위아래가 다름
# 미묘한 차이
df.groupby('대륙')[['맥주','와인']].agg(['mean','median','max'])

맥주	와인
mean	median	max	mean	median	max
대륙						
AF	61.471698	32.0	376	16.264151	2.0	233
AS	37.045455	17.5	247	9.068182	1.0	123
EU	193.777778	219.0	361	142.222222	128.0	370