[Pandas] 판다스 데이터 집계 | group by | pivot table

·2024년 12월 18일

GROUP BY

데이터 프레임 정의

df = pd.DataFrame({
   'Category': ['A', 'B', 'A', 'B', 'A', 'B'],
   'Value': [1, 2, 3, 4, 5, 6]
})

카테고리별 평균 구하기

df.groupby('Category').mean()


'Category'가 인덱스로 들어감.

카테고리별 합

df.groupby('Category').sum()

카테고리별 개수

df.groupby('Category').count()

카테고리별 최대/최소

df.groupby('Category').max()
df.groupby('Category').min()

카테고리별 첫 번째 값

df.groupby('Category').first()

카테고리별 값들을 리스트로 묶기

df.groupby('Category').agg(list)

두 개 이상의 컬럼으로 그룹화하기

import seaborn as sns
data = sns.load_dataset('tips')
df = pd.DataFrame(data)

df[['sex', 'day', 'total_bill', 'tip', 'size']].groupby(['sex', 'day']).mean()
  • 성별과 요일 별 평균 구하기

두 개 이상의 그룹에 각각 다른 집계 적용하기

df[['sex', 'day', 'total_bill', 'tip', 'size']].groupby(['day', 'sex']).agg({'total_bill': 'max','tip':'mean', 'size' : 'sum'})

  • total_bill은 최댓값
  • tip은 평균값
  • size는 총합 산출

Pivot Table

데이터프레임 정의

df = pd.DataFrame({
    'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-01'],
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'Value': [10, 20, 30, 40, 50]
})

피벗테이블 만들기

pivot = df.pivot_table(index =  'Date',
                       columns = 'Category',
                       values = 'Value',
                       aggfunc = 'sum')

데이터프레임 정의 (2)

df = pd.DataFrame({
    'Date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02', '2023-01-01'],
    'Category': ['A', 'B', 'A', 'B', 'A'],
    'SubCategory': ['x', 'x', 'y', 'y', 'x'],
    'Value': [10, 20, 30, 40, 50]
})

피벗테이블 만들기 (2)

pivot = df.pivot_table(index = 'Date',
                      columns = ['Category', 'SubCategory'],
                      values = 'Value',
                      aggfunc = 'sum')

profile
To Dare is To Do

0개의 댓글