본문 바로가기

코딩으로 익히는 Python/Pandas

[Python] 18. pandas DataFrame pivot_table : groupby(), sum(), max(), min(), count(), agg(), aggfunc=[] 예제

728x90
반응형
SMALL
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
import matplotlib

rc('font', family='AppleGothic')
plt.rcParams['axes.unicode_minus'] = False

데이터 불러오기 (pd.read_csv)

python 파일 경로에 data폴더 만든 후 다음의 hotel.xlsx 파일 넣어놓기

grade.csv
0.00MB

 

df = pd.read_csv('data/grade.csv')
df

 

g = df.groupby('학년')
g.mean()

 

df.info()
# pivot_table에서는 수치형 데이터들의 mean 계산(기본)
[OUT] :

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9 entries, 0 to 8
Data columns (total 5 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   학년      9 non-null      object
 1   과목      9 non-null      object
 2   결과      9 non-null      object
 3   중간      9 non-null      int64 
 4   기말      9 non-null      int64 
dtypes: int64(2), object(3)
memory usage: 488.0+ bytes

 

gradeDF = df.pivot_table(index='학년')
gradeDF

 

gradeDF = df.pivot_table(index='학년',aggfunc='sum')
gradeDF

 

gradeDF = df.pivot_table(index=['학년','과목'],aggfunc='sum')
gradeDF
# gradeDF[['중간','기말']] -> 중간과 기말의 칼럼을 바꾸고 싶다면

 

g = df.groupby(['학년','과목'])
g.mean()

 

gradeDF = df.pivot_table(index=['학년','과목'],values='중간',columns='결과')
gradeDF

 

gradeDF = df.pivot_table(index='학년',aggfunc=['sum','mean'])
gradeDF

 

def fn(v):
    print('=='*12)
    print(v)
    print('=='*12)
    if v.mean()>=70:
        return '합격'
    else:
        return '불합격'
    return v.mean()
gradeDF = df.pivot_table(index='학년',values=['중간'],aggfunc=fn)
gradeDF

 

gradeDF = df.pivot_table(index='학년',values=['중간'],aggfunc=lambda v:'합격' if v.mean()>=70 else '불합격')
gradeDF


review
- groupby()와 pivot_table() 언제 써야하는 지 구분
728x90
반응형
LIST