본문 바로가기

Data Science/Data Preprocessing

[03. Feature Engineering] 001. Aggregation

728x90

의미있는 정보 추출을 위해  데이터를 요약하는 방법과 다양한 통계치로 요약된 데이터를 한 번에 보는 방법에 대해 알아보자. 합, 최소값, 최대값, 중간값 등의 통계치를 한 번에 출력하는 방법은 다음과 같다. agg함수를 통하여 다양한 정보를 볼 수 있다. 아래는 전체기간 및 주간 단위로 그룹화하여 나타낸 결과이다. 

 

import FinanceDataReader as fdr

if __name__ == '__main__':
    aapl = fdr.DataReader('AAPL', '2021-06-01')
    ssec = fdr.DataReader('005930', '2021-06-01')
    price = aapl[['Close']].merge(ssec[['Close']], how='outer', left_index=True, right_index=True)
    price = price.rename(columns={'Close_x': 'AAPL', 'Close_y': 'SSEC'})

    print(price.agg(['sum', 'min', 'mean', 'median', 'max', 'std']))
    print(price.resample('1W').agg(['sum', 'min', 'mean', 'median', 'max', 'std']))
    
    
결과 값
           AAPL          SSEC
sum     2184.50000  1.459100e+06
min      123.54000  7.990000e+04
mean     128.50000  8.106111e+04
median   127.35000  8.095000e+04
max      133.98000  8.280000e+04
std        3.29719  7.919736e+02

                  AAPL                  ...          SSEC                    
               sum     min        mean  ...  median   max      std
Date                                    ...                           
2021-06-06  498.77  123.54  124.692500  ...  81500  82800  1070.825227
2021-06-13  633.23  125.90  126.646000  ...  81100  81900   476.445170
2021-06-20  652.52  129.64  130.504000  ...  80900  81800   531.036722
2021-06-27  399.98  132.30  133.326667  ...  80050  81200   605.530071

기본적인 합, 최소값 등의 집계함수는 내장되어 있어서 편리하게 사용할 수 있다. 만약에 다른 분석 방법으로 데이터를 보고 싶다면 아래와 같이 직접 함수를 만들어서 적용시킬 수 있다.

 

def abc(data):
    return data.sum() * 0.1

print(price.resample('1W').agg(abc))
print(price.resample('1W').agg(['sum', abc]))


결과 값
             AAPL   SSEC
Date                     
2021-06-06  49.877  32640
2021-06-13  63.323  40690
2021-06-20  65.252  40460
2021-06-27  39.998  32120

                AAPL            SSEC       
             sum     abc     sum    abc
Date                                     
2021-06-06  498.77  49.877  326400  32640
2021-06-13  633.23  63.323  406900  40690
2021-06-20  652.52  65.252  404600  40460
2021-06-27  399.98  39.998  321200  32120

 

합의 10%를 출력하는 abc함수를 만들어 출력한 결과이다. 물론 내장되어있는 함수와 같이 출력하는 것 또한 가능하다.

728x90