데이터 전처리 ( 그룹 )
8. 그룹.html
0.28MB
8. 그룹.ipynb
0.03MB
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 |
728x90
'BE > 머신러닝(ML)' 카테고리의 다른 글
[머신러닝] 시각화 ( mataplotlib, seaborn ) (0) | 2024.05.24 |
---|---|
[머신러닝] 실습 예제 및 풀이 (1) | 2024.05.23 |
[머신러닝] 데이터 전처리 ( 시계열 ) (0) | 2024.05.23 |
[머신러닝] 데이터 전처리 ( 원 핫 인코딩 ) (0) | 2024.05.23 |
[머신러닝] 모델 생성 및 평가 (0) | 2024.05.23 |