본문 바로가기
머신러닝 딥러닝

0823 Pandas7 DataFeame Grouping

by 대금부는개발자 2021. 8. 23.
SMALL

 

 

Series Grouping

특정 카테고리로 내용을 분리시켜요!

 

 

import numpy as np
import pandas as pd

df = pd.DataFrame({'학과' : ['컴퓨터', '철학', '컴퓨터', '철학', '컴퓨터'],
                  '이름' : ['아이유','김연아','홍길동','강감찬','신사임당'],
                  '학년' : [1, 2, 3, 2, 3],
                  '학점' : [1.5, 2.7, 3.7, 1.9, 4.0]})

display(df)

 


dept = df['학점'].groupby(df['학과']) # groupby() 연관성이 있는 것끼리 grouping
display(dept)

#<pandas.core.groupby.generic.SeriesGroupBy object at 0x000002186496 B8 C8>

 

 # get_group → 함수를 그룹객체에 적용해 나눠진 그룹중 가져오고 싶은 그룹만 가져와요.
computer = dept.get_group('컴퓨터')
print(computer)    #그룹에 대한 정보

0    1.5
2    3.7
4    4.0
Name: 학점, dtype: float64

 


g_size = dept.size() #그룹당 몇개
print(g_size)

학과
철학     2
컴퓨터    3
dtype: int64



print(dept.mean()) #학점에 대한 학과별 그룹 평균

 

      학년        학점
학과                     
철학   2.000000  2.300000
컴퓨터  2.333333  3.066667

 

 

 

2단계 grouping

 

 

import numpy as np
import pandas as pd

 

df = pd.DataFrame({'학과' : ['컴퓨터', '철학', '컴퓨터', '철학', '컴퓨터'],
                  '이름' : ['아이유', '김연아', '홍길동', '강감찬', '신사임당'],
                  '학년' : [1, 2, 3, 2, 3],
                  '학점' : [1.5, 2.7, 3.7, 1.9, 4.0]})

display(df)


dept = df ['학점']. groupby([df ['학과'], df ['학년']])
dept.mean()

 

학과   학년
철학   2     2.30
컴퓨터  1     1.50
     3     3.85
Name: 학점, dtype: float64

 


#이렇게 처리하면 2차 index를 이용하는 형식이 되기 때문에 사용하기 많이 불편해져요!

#많이 사용하는 방식은 최 하위 index를 column으로 만들어서 2차원 DataFrame으로 변환시키는 방법을 많이 이용해요.

#unstack

 

학과   학년   <=1차 , 2차 인덱스 여기서 가장 오른쪽 인덱스 '학년'을 최하위 인덱스라고 불려요
철학   2     2.30
컴퓨터  1     1.50
     3     3.85
Name: 학점, dtype: float64

 

 

#unstack

stack : 위에서 아래로 (행방향)
unstack : 왼쪽에서 오른쪽으로 (열방향)

 

 

dept.mean()
display(dept.mean(). unstack())

 

 

 

DataFrame Grouping

import numpy as np
import pandas as pd

df = pd.DataFrame({'학과' : ['컴퓨터', '철학', '컴퓨터', '철학', '컴퓨터'],
                  '이름' : ['아이유', '김연아', '홍길동', '강감찬', '신사임당'],
                  '학년' : [1, 2, 3, 2, 3],
                  '학점' : [1.5, 2.7, 3.7, 1.9, 4.0]})

display(df)
# dept = df ['학점']. groupby(df ['학과']) #Series 
dept = df.groupby(df ['학과']) #DataFrame Group By object

display(dept.get_group('컴퓨터'))

display(dept.size())

display(dept.mean())

 

 

 

grouping 반복 처리 

 

 

import numpy as np
import pandas as pd

df = pd.DataFrame({'학과' : ['컴퓨터','철학','컴퓨터','철학','컴퓨터'],
                  '이름' : ['아이유','김연아','홍길동','강감찬','신사임당'],
                  '학년' : [1, 2, 3, 2, 3],
                  '학점' : [1.5, 2.7, 3.7, 1.9, 4.0]})

display(df)

for dept, group in df.groupby(df['학과']):
    print(dept)
    display(group)

 

 

i

mport numpy as np
import pandas as pd

df = pd.DataFrame({'학과' : ['컴퓨터','철학','컴퓨터','철학','컴퓨터'],
                  '이름' : ['아이유','김연아','홍길동','강감찬','신사임당'],
                  '학년' : [1, 2, 3, 2, 3],
                  '학점' : [1.5, 2.7, 3.7, 1.9, 4.0]})

display(df)

for (dept, year), group in df.groupby([df['학과'], df['학년']]):
    print(dept, year)
    display(group)

 

 

 

pandas에 대한 기본적인 사용법( Series, DataFrame)

Data를 처리하는 방법에 대해서 배웠어요!

 

mpg.txt라는 파일을 받아 연습을 해 보아요! 

 

 

열어보면 차에 대한 정보가 나와요! csv형태

 

manufacturer 은 제조자 model 은 모델 displ 배기량 year 생산연도 cyl은 기통 trans auto 수동 자동 drv 전륜 후륜 사륜 cty 도시연비 hwy 고속도로 연비, fl 은 연료 type, class 자동차 종류

 

맨 윗줄 column 아래는 data

 

아래 사이트에 데이터에 대한 명세가 자세히 나와있어요!

https://rpubs.com/shailesh/mpg-exploration

 

RPubs - Exploration of MPG Data Set

 

rpubs.com

 

 

 

1. displ(배기량)이 4 이하인 자동차와 5 이상인 자동차 중 어떤 hwy(고속도로 연비)가 평균적으로 더 높은지 확인하세요.

 

 

LIST

'머신러닝 딥러닝' 카테고리의 다른 글

0825 지도학습(Supervised Learning)  (0) 2021.08.25
0825 AI introduction  (1) 2021.08.25
0823 Pandas7 DataFeame의 결치처리  (0) 2021.08.23
0823 Pandas6 DataFeame의 merge  (0) 2021.08.23
0820 Pandas5 DataFrame function  (0) 2021.08.20

댓글