pandas Grouping

2021. 8. 23. 22:53python/pandas, numpy

728x90
# 1단계 Gropuing

Gropuing - 끼리끼리 묵는 것 , 그룹화 하는 것

 

 

import numpy as np
import pandas as pd


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

display(df)


# dept = df['학점'].groupby(df['학과'])

# 학점을 학과기준으로 묶는다  [학점을 알고싶은 상황]
# display(dept)

시리즈 객체 ,

# computer = dept.get_group('컴퓨터')

#  학점을 학과기준으로 묶은거 중에 (그룹[학과인]) 컴퓨터만 
# print(computer)

컴퓨터의 학점값만 나왔다


# g_size = dept.size()

# 학점을 학과기준으로 묶은 (그룹[학과])의 size
# print(g_size)


# print(dept.mean())

학점을 학과기준으로 묶은 (그룹[학과])의 평균

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

# 2단계 grouping

 

 

#학점을 뽑을건데 학과를 grouping 하니 학과안에 학년이라는 group이 또 있다


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

# 처음에는 학과로 grouping하고 다음은 학년으로 grouping

print(dept.mean())

학과가 1차 index  /   학년이 2차 index

 

# 이렇게 처리하면 2차 index를 이용하는 형식이 되기 때문에 사용하기 많이 불편해요!
# 많이 사용하는 방식은 최 하위 index[밑 상황에서는 학년이 2차index]를 column으로 만들어서 dataframe으로 변환시키는 방법을 많이 이용해요!
unstack()


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

나온 값들은 평균

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

DataFrame Grouping

 

지금까지는 data frame에서 series만 띄어내서 grouping

 

# DataFrame Gropuing

import numpy as np
import pandas as pd


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

display(df)

 


# dept = df['학점'].groupby(df['학과']) 는 시리즈 group


dept = df.groupby(df['학과'])
display(dept)                # DataFrameGroupBy object


DataFrameGroupBy 했기 때문에 DataFrame 으로 나온다


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

 

display(dept.size())

철학 2 컴퓨터 3개이므로 size는 series로 나온다

display(dept.mean())


 

Grouping 반복문

# DataFrame Gropuing

import numpy as np
import pandas as pd


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

display(df)


for dept, group in df.groupby(df['학과']):
#     print(dept)    -   학과가 나온다 (group)


#     display(group)        -      각 학과의 DataFrame 내용들이 나온다


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

# (dept, year)을 잡은 이유는 컴퓨터에서 학년이 2개로 나뉘어 지기 때문
    print(dept, year)


    display(group)
   


#####################################################

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

# Data를 처리하는 방법에 대해서 배웠어요!!
# ?? (경험)

mpg 문제.txt
0.00MB
mpg.zip
0.00MB

'python > pandas, numpy' 카테고리의 다른 글

pandas concat(연결), 결측치, 이상치, 중복행  (0) 2021.08.23
pandas merge (feat. join)  (0) 2021.08.23
pandas 공분산, 정렬  (0) 2021.08.21
pandas 인덱스 와 컬럼(index & colum)  (0) 2021.08.20
dataframe으로 json이용  (0) 2021.08.19