기본 데이터
import pandas as pd
df = pd.read_excel('score.xlsx', index_col = '지원번호')
df
이름 학교 키 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 NaN
5번 강백호 북산고 188 15 20 10 35 10 NaN
6번 변덕규 능남고 202 80 100 95 85 80 C
7번 황태산 능남고 188 55 65 45 40 35 PYTHON
8번 윤대협 능남고 190 100 85 90 95 95 C#
1. groupby 함수
df.groupby('학교')
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x00000234D4A7D6D0>
이렇게 '학교'를 기준으로 그룹화를 하면 밑에처럼 나옵니다.
이때, 원하시는 값에 따라 함수를 적어주시면 됩니다.
df.groupby('학교').get_group('북산고')
이름 학교 키 국어 영어 수학 과학 사회 SW특기
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python
2번 정대만 북산고 184 40 35 50 55 25 Java
3번 송태섭 북산고 168 80 75 70 80 75 Javascript
4번 서태웅 북산고 187 40 60 70 75 80 NaN
5번 강백호 북산고 188 15 20 10 35 10 NaN
이렇게 해주시면 '북산고'에 대한 정보를 뽑아옵니다.
df.groupby('학교').mean()
키 국어 영어 수학 과학 사회
학교
능남고 193.333333 78.333333 83.333333 76.666667 73.333333 70.0
북산고 184.800000 53.000000 55.000000 60.000000 68.000000 55.0
또한, groupby를 한 곳에서 column도 뽑아올 수 있습니다.
df.groupby('학교')['키'].mean() # groupby해서 키를 먼저 가져온 뒤 평균을 계산함
학교
능남고 193.333333
북산고 184.800000
Name: 키, dtype: float64
이때, '학년' 정보를 추가해보겠습니다.
df['학년'] = [3, 3, 2, 1, 1, 3, 2, 2] # 학년 column을 추가
df
이름 학교 키 국어 영어 수학 과학 사회 SW특기 학년
지원번호
1번 채치수 북산고 197 90 85 100 95 85 Python 3
2번 정대만 북산고 184 40 35 50 55 25 Java 3
3번 송태섭 북산고 168 80 75 70 80 75 Javascript 2
4번 서태웅 북산고 187 40 60 70 75 80 NaN 1
5번 강백호 북산고 188 15 20 10 35 10 NaN 1
6번 변덕규 능남고 202 80 100 95 85 80 C 3
7번 황태산 능남고 188 55 65 45 40 35 PYTHON 2
8번 윤대협 능남고 190 100 85 90 95 95 C# 2
여기서 학교별, 학년별 평균 데이터를 뽑아보겠습니다.
df.groupby(['학교', '학년']).mean()
키 국어 영어 수학 과학 사회
학교 학년
능남고 2 189.0 77.5 75.0 67.5 67.5 65.0
3 202.0 80.0 100.0 95.0 85.0 80.0
북산고 1 187.5 27.5 40.0 40.0 55.0 45.0
2 168.0 80.0 75.0 70.0 80.0 75.0
3 190.5 65.0 60.0 75.0 75.0 55.0
이렇게 학교별로 나눈 후, 학년별로 평균 데이터가 나옵니다.
그 외에는 딱히 특별한 게 없네요..
아무튼 제 생각에 groupby를 하면 새로운 DataFrame이 생성되는게 아니라 그냥 DataFrameGroupBy라는 객체가 생성되는 것 같습니다. 이 점에 유의하시면 될 것 같습니다.
감사합니다.
지적 환영합니다.
참고 : 나도코딩
'Python Library > Pandas' 카테고리의 다른 글
[Pandas - Python] Removing Duplicates - drop_duplicates() (중복 제거) (0) | 2022.06.13 |
---|---|
[Pandas - Python] Handling Missing Data (누락된 데이터 처리) (0) | 2022.06.13 |
[Pandas - Python] Pandas 라이브러리와 함수 적용 (0) | 2022.02.08 |
[Pandas - Python] Pandas 라이브러리와 데이터 수정(Column과 Row, Cell) (0) | 2022.02.07 |
[Pandas - Python] Pandas 라이브러리와 결측치 및 데이터 정렬(fillna, sort_values, sort_index) (0) | 2022.02.07 |