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 |