2021. 8. 23. 22:53ㆍpython/pandas, numpy
# 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())
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를 처리하는 방법에 대해서 배웠어요!!
# ?? (경험)
'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 |