반응형

02-09. 누적 계산 (expanding)

DataFrame.expanding(min_periods=1, center=None, axis=0, method='single')

 

개요


expanding 메서드는 행이나 열의 값에 대해 누적으로 연산을 수행하는 메서드입니다.
df.expanding( ).sum( ) 처럼 추가 메서드를 이용하여 연산을 수행합니다.

 

사용법


기본 사용법
※ 자세한 내용은 아래 예시를 참고 바랍니다.
df.expanding(min_periods=1, center=None, axis=0, method='single').추가메서드()
min_periods : 연산을 수행할 요소의 최소 갯수입니다. 이보다 작으면 NaN을 출력합니다.
center : 미사용
axis : 누적 연산을 수행할 축을 지정합니다.
method : {single / table} 연산을 한 줄씩 수행할지 아니면 전체 테이블에 대해서 롤링을 수행할지 여부입니다.
기본값은 'single'로 한 줄씩 연산을 수행합니다. 'table'을 사용하기 위해서는 numba 라이브러리가 설치되어있어야 하며,
추가 연산 메서드에서 engine=numba로 설정해주어야 합니다.

반응형

예시


먼저 기본적인 사용법 예시를위하여 4x2 짜리 데이터를 만들어 보겠습니다.
method='table'의 사용을 위해 numba 라이브러리를 추가로 import하였습니다.

import numba
...
data = {'col1':[1,2,3,4],'col2':[3,7,5,6]}
idx = ['row1','row2','row3','row4']
df = pd.DataFrame(data = data, index = idx)
print(df)
>>
      col1  col2
row1     1     3
row2     2     7
row3     3     5
row4     4     6


기본적인 사용법
기본적으로 df.expanding( ).추가연산메서드 형태로 지정하면, 해당 연산을 누적으로 진행하게 됩니다.

print(df.expanding().sum())
>>
      col1  col2
row1   1.0   3.0 
row2   3.0  10.0
row3   6.0  15.0
row4  10.0  21.0 #열마다 누적으로 sum을 진행


min_period를 지정하게되면, 입력값 만큼의 갯수가 충족되지 않으면 연산을 하지 않고 NaN을 반환합니다.

print(df.expanding(min_periods=4).sum())
>>
      col1  col2
row1   NaN   NaN
row2   NaN   NaN
row3   NaN   NaN
row4  10.0  21.0


axis=1로 지정하면 열 기준으로 누적값의 계산이 수행됩니다.

print(df.expanding(axis=1).sum())
>>
      col1  col2
row1   1.0   4.0
row2   2.0   9.0
row3   3.0   8.0
row4   4.0  10.0


method='table'로 입력할 경우 numba 라이브러리를 이용해 연산을 테이블단위로 롤링할 수 있습니다.
추가 연산 메서드에 인수로 engine='numba'를 지정해주어야 합니다.

파이썬은 인터프리티 언어라서 C/C++등과 같은 언어에 비해 느립니다.
Numba는 파이썬 코드를 LLVM컴파일러를 이용해 머신코드로 바꾸어 수치연산을 가속해주는 라이브러리입니다.

print(df.expanding(method='table').sum(engine='numba'))
>>
      col1  col2
row1   1.0   3.0 # 연산의 결과는 singe때와 동일하지만 대량의 데이터 연산에는 빠른 속도를 지원함.
row2   3.0  10.0
row3   6.0  15.0
row4  10.0  21.0
반응형

+ 최근 글