Published 2021. 9. 30. 20:21
728x90
반응형

group by

간단한 집계를 넘어서서 조건부로 집계하고 싶은 경우

df = pd.DataFrame({
  'data1' : range(6),
  'data2' : [4,4,6,0,6,1],
  'key':['A','B','C','A','B','C']
})
df.groupby('key').sum() # key라는 컬럼으로 groupby
df.groupby(['key','data1']).sum() # key와 data1이라는 컬럼으로 groupby => 계층적 groupby

aggregate

groupby를 통해서 집계를 한번에 계산하는 방법

한 번의 groupby를 통해 여러개의 통계함수를 적용시키고 싶을 때 사용

df.groupby('key').aggregate(['min', np.median, max]) # min, numpy.median, max
df.groupby('key').aggregate({'data1': 'min', 'data2': np.sum}) # data1은 min, data2는 sum

filter

groupby를 통해서 그룹 속성을 기준으로 데이터 필터링

def filter_by_mean(x):
	return x['data2'].mean() > 3
df.groupby('key').mean() # key로 groupby한 값의 평균값
df.groupby('key').filter(filter_by_mean) # 평균이 3보다 큰 값만 return

예제 👇

import numpy as np
import pandas as pd

df = pd.DataFrame({
    'key': ['A', 'B', 'C', 'A', 'B', 'C'],
    'data1': [1, 2, 3, 1, 2, 3],
    'data2': [4, 4, 6, 0, 6, 1]
})
print("DataFrame:")
print(df, "\n")
'''
DataFrame:
  key  data1  data2
0   A      1      4
1   B      2      4
2   C      3      6
3   A      1      0
4   B      2      6
5   C      3      1 
'''

# groupby 함수를 이용해봅시다.
# key를 기준으로 묶어 합계를 구해 출력해보세요.
print(df.groupby('key').sum())
'''
      data1  data2
key              
A        2      4
B        4     10
C        6      7
'''

# key와 data1을 기준으로 묶어 합계를 구해 출력해보세요.
print(df.groupby(['key', 'data1']).sum())
'''
           data2
key data1       
A   1          4
B   2         10
C   3          7
'''
반응형

'프로그래밍 > Python' 카테고리의 다른 글

Matplotlib 그래프  (0) 2021.10.05
Pandas groupby (2)  (0) 2021.10.01
Pandas 집계함수  (0) 2021.09.29
Pandas 데이터프레임 정렬  (0) 2021.09.28
Pandas 데이터 선택 및 변경하기  (0) 2021.09.27
복사했습니다!