본문 바로가기

데이터 분석 학습

6장 자유자재로 데이터 가공하기 (5)

반응형

6-6 집단별로 요약하기

'집단별 평균'이나 '집단별 빈도'처럼 각 집단을 요약한 값을 구할 때는 df.groupby(), df.agg()를 사용

집단별로 요약하기

전체 요약 통계량 구하기

exam.agg(mean_math = ('math', 'mean'))

집단별 요약 통계량 구하기

exam.groupby('nclass').agg(mean_math = ('math', 'mean'))

※ 변수를 인덱스로 바꾸지 않기

exam.groupby('nclass', as_index = False).agg(mean_math = ('math', 'mean'))

agg()에 자주 사용하는 요약 통계량 함수

※ 모든 변수의 요약 통계량 한 번에 구하기

exam.groupby('nclass').mean()

mpg.query('manufacturer == "audi"').groupby(['drv']).agg(n = ('drv', 'count'))

mpg.query('manufacturer == "chevrolet"').groupby(['drv']).agg(n = ('drv', 'count'))

※ value_counts()로 집단별 빈도 간단하게 구하기

mpg.groupby('drv').agg(n = ('drv', 'count'))

mpg['drv'].value_counts()

"""
f    106
4    103
r     25
Name: drv, dtype: int64
"""
# drv 빈도 구하기
# 데이터 프레임으로 바꾸기, 변수명 n으로 바꾸기
# axis 이름에 drv 지정
# n이 100을 초과한 경우 추출
mpg['drv'].value_counts().to_frame('n').rename_axis('drv').query('n > 100')

pandas 함수 조합하기

제조 회사별로 'suv' 자동차의 도시 및 고속도로 합산 연비 평균을 구해 내림차순으로 정렬하고, 1~5위까지 출력하기

mpg.query('category == "suv"')\
   .assign(total = (mpg['hwy'] + mpg['cty']) / 2)\
   .groupby('manufacturer')\
   .agg(mean_tot = ('total', 'mean'))\
   .sort_values('mean_tot', ascending = False)\
   .head(5)

 

혼자서 해보기 - mpg 데이터를 이용해 분석 문제를 해결해 보세요

Q1 mpg 데이터의 category는 자동차를 특징에 따라 'suv', 'compact' 등 일곱 종류로 분류한 변수입니다. 어떤 차종의 도시 연비가 높은지 비교해 보려고 합니다. category별 cty 평균을 구해보세요

mpg.groupby('category').agg(cty_mean = ('cty', 'mean'))

Q2 앞 문제의 출력 결과는 category 값 알파벳순으로 정렬되어 있습니다. 어떤 차종의 도시 연비가 높은지 쉽게 알아볼 수 있도록 cty 평균이 높은 순으로 정렬해 출력하세요.

mpg.groupby('category').agg(cty_mean = ('cty', 'mean')).sort_values('cty_mean', ascending = False)

Q3 어떤 회사 자동차의 hwy(고속도로 연비)가 가장 높은지 알아보려고 합니다. hwy 평균이 가장 높은 회사 세 곳을 출력하세요.

mpg.groupby('manufacturer').agg(hwy_mean = ('hwy', 'mean')).sort_values('hwy_mean', ascending = False).head(3)

Q4 어떤 회사에서 'compact' 차종을 가장 많이 생산하는지 알아보려고 합니다. 회사별 'compact' 차종 수를 내림차순으로 정렬해 출력하세요

mpg.query('category == "compact"').groupby('manufacturer').agg(n = ('manufacturer', 'count')).sort_values('manufacturer', ascending = False)

 

 

 

 

 

※ 해당 내용은 <Do it! 파이썬 데이터 분석>의 내용을 토대로 학습하며 정리한 내용입니다.

반응형