티스토리 뷰
DataFrame Grouping
import numpy as np
import pandas as pd
my_dict = {'학과': ['컴퓨터', '체육교육과', '컴퓨터', '체육교육과', '컴퓨터'],
'학년': [1, 2, 3, 2, 3],
'이름': ['홍길동', '김연아', '최길동', '아이유', '신사임당'],
'학점': [1.5, 4.4, 3.7, 4.5, 3.8]}
df = pd.DataFrame(my_dict)
display(df)
###########################################################
# 학과를 기준으로 grouping
# Series를 grouping하는 개념
dept = df['학점'].groupby(df['학과'])
display(dept) # pandas.core.groupby.generic.SeriesGroupBy object
# 그룹 안의 데이터를 확인하고 싶으면 get_group() 사용
print(dept.get_group('컴퓨터')) # Series
# 각 그룹의 사이즈를 확인하고 싶은 경우 size()
print(dept.size()) # Series로 리턴, 각 그룹의 count
print(dept.mean()) # Series로 리턴
# 2단계 grouping 간 grouping 가능
dept_year = df['학점'].groupby([df['학과'], df['학년']])
print(dept_year.mean())
# Series와 DataFrame은 index와 column에 multi index 개념을 지원
# unstack() : 최하위 index를 column()으로 설정
display(dept_year.mean().unstack())
DaraFrame을 grouping
import numpy as np
import pandas as pd
my_dict = {'학과': ['컴퓨터', '체육교육과', '컴퓨터', '체육교육과', '컴퓨터'],
'학년': [1, 2, 3, 2, 3],
'이름': ['홍길동', '김연아', '최길동', '아이유', '신사임당'],
'학점': [1.5, 4.4, 3.7, 4.5, 3.8]}
df = pd.DataFrame(my_dict)
display(df)
####################################
# dept_year = df['학점'].groupby([df['학과'], df['학년']]) # Series
# DataFrame을 grouping한다.
df_group_dept = df.groupby(df['학과'])
print(df_group_dept) # pandas.core.groupby.generic.DataFrameGroupBy
display(df_group_dept.get_group('컴퓨터'))
display(df_group_dept.mean())
# dept_year = df['학점'].groupby([df['학과'],df['학년']])
df_dept_year = df.groupby(['학과','학년'])
display(df_dept_year.mean().unstack())
import numpy as np
import pandas as pd
my_dict = {'학과': ['컴퓨터', '체육교육과', '컴퓨터', '체육교육과', '컴퓨터'],
'학년': [1, 2, 3, 2, 3],
'이름': ['홍길동', '김연아', '최길동', '아이유', '신사임당'],
'학점': [1.5, 4.4, 3.7, 4.5, 3.8]}
df = pd.DataFrame(my_dict)
display(df)
#######################
# 학과별 평균 학점은?
print(df['학점'].groupby(df['학과']).mean())
# 학과별 몇명이 존재하는가?
print(df['학점'].groupby(df['학과']).size())
Grouping으로, 해당 그룹 반복 처리
# 학과로 Grouping을 한 후 for문을 이용해서 반복처리.
# for (dept, group) in df.groupby(df['학과']):
# print(dept)
# display(group)
# print("================")
for ((dept, year), group) in df.groupby(['학과', '학년']):
print(dept)
print(year)
display(group)
print("================")
'멀티캠퍼스 AI과정 > 04 Pandas' 카테고리의 다른 글
Pandas 04 - 결측치 처리 (0) | 2020.09.15 |
---|---|
Pandas 04 - DataFrame 결합 Mearge (Join) (0) | 2020.09.15 |
Pandas 03 - DataFrame 집계함수, 통계기반 함수, 정렬, apply와 lambda (0) | 2020.09.15 |
Pandas 02 - DataFrame describe(), indexing, 행/칼럼 추가, 삭제 (0) | 2020.09.11 |
Pandas 02 - DataFrame (2차원) (0) | 2020.09.09 |
댓글