※ groupby() 함수
- 해당 함수를 이용하면 키 값을 기준으로 한 그룹으로 묶을 수 있음
예시)
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")
# groupby 함수를 이용해봅시다.
# key를 기준으로 묶어 합계를 구해 출력해보세요.
print(df.groupby('key').sum())
# key와 data1을 기준으로 묶어 합계를 구해 출력해보세요.
print(df.groupby(['key', 'data1']).sum())
출력)
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
data1 data2
key
A 2 4
B 4 10
C 6 7
data2
key data1
A 1 4
B 2 10
C 3 7
두번째 문단의 출력문구는 key 만 그룹으로 묶여 있기 때문에 혼자 높이가 다르고
세번째 문단의 출력문구는 key와 data1 을 그룹으로 묶어두어 data2 의 높이가 다르게 표시가 되는 것이 보인다.
또한 key만을 그룹으로 묶은 것으로 인해 중복되는 값을 합쳐버리기 때문에 data1 과 data2 의 값은 더해져 출력이 되고 key와 data1 을 그룹으로 묶었을 때는 data2 만의 값이 더해져 출력이 된다.
※ aggregate() 함수
- 해당 함수는 키값을 기준으로 그룹으로 묶은 결과로 통계량을 구할 수 있다.
예시)
import numpy as np
import pandas as pd
df = pd.DataFrame({
'key': ['A', 'B', 'C', 'A', 'B', 'C'],
'data1': [0, 1, 2, 3, 4, 5],
'data2': [4, 4, 6, 0, 6, 1]
})
print("DataFrame:")
print(df, "\n")
# aggregate를 이용하여 요약 통계량을 산출해봅시다.
# 데이터 프레임을 'key' 칼럼으로 묶고, data1과 data2 각각의 최솟값, 중앙값, 최댓값을 출력하세요.
print(df.groupby('key').aggregate([min, np.median, max]))
# 데이터 프레임을 'key' 칼럼으로 묶고, data1의 최솟값, data2의 합계를 출력하세요.
print(df.groupby('key').aggregate({'data1':min, 'data2':sum}))
출력)
DataFrame:
key data1 data2
0 A 0 4
1 B 1 4
2 C 2 6
3 A 3 0
4 B 4 6
5 C 5 1
data1 data2
min median max min median max
key
A 0 1.5 3 0 2.0 4
B 1 2.5 4 4 5.0 6
C 2 3.5 5 1 3.5 6
data1 data2
key
A 0 4
B 1 10
C 2 7
예시와 출력문을 비교해보면 알 수 있는 사실은 해당 함수는 그룹으로 묶인 것들을 최소, 중간, 최대 값을 출력시킬 수 있다는 것과 그룹으로 묶인 것들 중 작은 값과 해당되는 그룹의 값을 모두 더한 결과도 출력할 수 있다는 것 이다.
'기타 > What I Learned' 카테고리의 다른 글
[AI] Matplotlib 데이터 시각화(2) (0) | 2021.10.21 |
---|---|
[AI] Matplotlib 데이터 시각화(1) (0) | 2021.10.20 |
[자료구조&알고리즘] 힙(Heaps(2)) (0) | 2021.10.18 |
[자료구조&알고리즘] 힙(1) (0) | 2021.10.16 |
[자료구조&알고리즘] 이진 탐색 트리(2) (0) | 2021.10.15 |