Pandas 그룹 (Grouping)


‘group by’는 아래의 과정 중 하나 이상의 단계를 거침을 의미합니다.

  • 데이터를 어떤 기준에 따라 그룹으로 나누는 것

  • 각 그룹에 독립적으로 함수를 적용하는 것

  • 결과를 데이터 구조로 결합하는 것

(Grouping section 참고)




1) DataFrame 만들기

예제

import pandas as pd
import numpy as np

np.random.seed(0)

df = pd.DataFrame({'A': ['foo', 'bar', 'foo', 'bar',
                      'foo', 'bar', 'foo', 'foo'],
                 'B': ['one', 'one', 'two', 'three',
                      'two', 'two', 'one', 'three'],
                 'C': np.random.randn(8),
                 'D': np.random.randn(8)})

print(df)
     A      B         C         D
0  foo    one  1.764052 -0.103219
1  bar    one  0.400157  0.410599
2  foo    two  0.978738  0.144044
3  bar  three  2.240893  1.454274
4  foo    two  1.867558  0.761038
5  bar    two -0.977278  0.121675
6  foo    one  0.950088  0.443863
7  foo  three -0.151357  0.333674

위와 같은 DataFrame을 하나 만들었습니다.




2) 한 열을 기준으로 그룹화하기

예제

print(df.groupby('A').sum())
            C         D
A
bar  1.663773  1.986547
foo  5.409080  1.579400

groupby()를 사용해서 A열을 기준으로 그룹화하고, sum() 함수를 적용합니다.




3) 여러 열을 기준으로 그룹화하기

예제

print(df.groupby(['A', 'B']).sum())
                  C         D
A   B
bar one    0.400157  0.410599
    three  2.240893  1.454274
    two   -0.977278  0.121675
foo one    2.714141  0.340644
    three -0.151357  0.333674
    two    2.846296  0.905081

여러 열을 그룹으로 묶어서 계층적인 인덱스를 구성합니다.

그리고 sum() 함수를 사용해서 인덱스 별 합을 구합니다.



이전글/다음글