In [1]:
import pandas as pd
df = pd.read_csv("../data_set/2.데이터 클린징/group_sample.csv")
df
Out[1]:
student_no class science english math sex
0 1 A 50 98 50 m
1 2 A 60 97 60 w
2 3 A 78 86 45 w
3 4 A 58 98 30 m
4 5 B 65 80 90 w
5 6 B 98 89 50 m
6 7 B 45 90 80 m
7 8 B 25 78 90 w
8 9 C 15 98 20 w
9 10 C 45 93 50 w
In [2]:
# class 컬럼을 기준으로 그루핑
df_class = df.groupby(['class'])
df_class
Out[2]:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000029EFA338BD0>
In [4]:
# 원하는 그룹을 확인하고자 할때
# get_group() 을 사용
df_class.get_group("A")
Out[4]:
student_no class science english math sex
0 1 A 50 98 50 m
1 2 A 60 97 60 w
2 3 A 78 86 45 w
3 4 A 58 98 30 m
In [15]:
# 각 그룹의 평균을 구하는 방법
# numeric_only 속성을 True 로 넣어
# 문자 값을 제외한 숫자만 평균을 구한다
df_class.mean( numeric_only = True )
Out[15]:
student_no science english math
class
A 2.5 61.50 94.75 46.25
B 6.5 58.25 84.25 77.50
C 9.5 30.00 95.50 35.00
In [18]:
# 여러 기준으로 그룹화 가능
df.groupby(['class', 'sex'])
Out[18]:
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x0000029E850A38D0>
In [20]:
# 여러 기준으로 그룹화된 그룹의 각 평균을 출력
df.groupby(['class', 'sex']).mean()
Out[20]:
student_no science english math
class sex
A m 2.5 54.0 98.0 40.0
w 2.5 69.0 91.5 52.5
B m 6.5 71.5 89.5 65.0
w 6.5 45.0 79.0 90.0
C w 9.5 30.0 95.5 35.0
In [21]:
# 수학의 평균만 출력
df_class[['math']].mean()
Out[21]:
math
class
A 46.25
B 77.50
C 35.00
In [23]:
# class 별로 묶인 것들의 갯수를 확인
df_class.count()
Out[23]:
student_no science english math sex
class
A 4 4 4 4 4
B 4 4 4 4 4
C 2 2 2 2 2
In [ ]:
 
In [ ]:
 
  • agg : 집계 연산기능
In [38]:
import numpy as np

# numpy 를 사용해 수학의 최댓값과 영어의 최솟값을 구함
df_class.agg( { 'math':'max', 'english':'min' } )
Out[38]:
math english
class
A 60 86
B 90 78
C 50 93
In [39]:
# 최댓값, 최솟값을 다른 형태로 출력
df_class.agg({'math':'max', 'english':'min'})
Out[39]:
math english
class
A 60 86
B 90 78
C 50 93
In [40]:
# 수학의 합, 영어의 평균을 출력
df_class.agg({'math':'sum', 'english':'mean'})
Out[40]:
math english
class
A 185 94.75
B 310 84.25
C 70 95.50
In [41]:
# 수학의 합과 최댓값을 둘 다 구하고 영어의 평균을 구함
df_class.agg({'math': ['sum', 'max'], 'english':'mean'})
Out[41]:
math english
sum max mean
class
A 185 60 94.75
B 310 90 84.25
C 70 50 95.50