[python] shift() , pct_change(), diff(), rolling(), resample()

2021. 10. 13. 14:59파이썬

[python] shift() , pct_change(), diff(), rolling(), resample()

shift()

  • 인덱스에 연결된 데이터를 일정 간격으로 이동시키는 함수.
  • default => period = 1, axis=0(row)
  • axis=1을 하면 데이터가 오른쪽으로 이동하게 된다.
mmm_df['Close_lag1'] = mmm_df['Close'].shift()
Date Open High Low Close Adj Close Volume Close_lag1
2017-01-03 178.830002 180.000000 177.220001 178.050003 154.443573 2509300 NaN
2017-01-04 178.029999 178.899994 177.610001 178.320007 154.677734 1542000 178.050003
2017-01-05 178.259995 179.139999 176.889999 177.710007 154.148636 1447800 178.320007
2017-01-06 177.289993 178.600006 175.800003 178.229996 154.599731 1625000 177.710007
2017-01-09 178.369995 178.380005 177.199997 177.270004 153.766983 1622600 178.229996

pct_change()

  • 현재 값과 이전 요소 값의 백분율 변화량을 연산하는 함수
mmm_df['pct_change'] = mmm_df['Close'].pct_change()
Open High Low Close Adj Close Volume Close_lag1 pct_change
Date
2017-01-03 178.830002 180.000000 177.220001 178.050003 154.443573 2509300 NaN NaN
2017-01-04 178.029999 178.899994 177.610001 178.320007 154.677734 1542000 178.050003 0.001516
2017-01-05 178.259995 179.139999 176.889999 177.710007 154.148636 1447800 178.320007 -0.003421
2017-01-06 177.289993 178.600006 175.800003 178.229996 154.599731 1625000 177.710007 0.002926
2017-01-09 178.369995 178.380005 177.199997 177.270004 153.766983 1622600 178.229996 -0.005386

diff()

  • pct_change()와 비슷한 원리이며, 뺄셈을 연산하는 함수이다.

rolling()

  • window(구간)데이터드리으 평균값, 최솟값, 최댓값등을 계산하는 함수.
mmm_df.drop('pct_change',axis=1)
mmm_df['MA'] = mmm_df['Close'].rolling(window = 5).mean()
mmm_df.head(10)
Open High Low Close Adj Close Volume Close_lag1 pct_change MA
Date
2017-01-03 178.830002 180.000000 177.220001 178.050003 154.443573 2509300 NaN NaN NaN
2017-01-04 178.029999 178.899994 177.610001 178.320007 154.677734 1542000 178.050003 0.001516 NaN
2017-01-05 178.259995 179.139999 176.889999 177.710007 154.148636 1447800 178.320007 -0.003421 NaN
2017-01-06 177.289993 178.600006 175.800003 178.229996 154.599731 1625000 177.710007 0.002926 NaN
2017-01-09 178.369995 178.380005 177.199997 177.270004 153.766983 1622600 178.229996 -0.005386 177.916003
2017-01-10 177.360001 177.490005 176.309998 176.580002 153.168457 2030100 177.270004 -0.003892 177.622003
2017-01-11 176.630005 178.449997 176.389999 177.889999 154.304779 1579600 176.580002 0.007419 177.536002
2017-01-12 176.970001 177.699997 175.750000 177.440002 153.914429 1321800 177.889999 -0.002530 177.482001
2017-01-13 177.580002 177.910004 176.830002 177.389999 153.871063 1265500 177.440002 -0.000282 177.314001
2017-01-17 177.000000 177.679993 176.250000 177.259995 153.758301 1557500 177.389999 -0.000733 177.311999

resample()

  • 시간 간격을 재조정하는 기능

업샘플링

  • 분단위, 초 단위로 샘플의 빈도수를 증가시킨다
  • 보간법을 이용해 누락된 데이터를 채워나간다

다운샘플링

  • 몇 일, 몇 달 단위로 샘플의 빈도수를 감소시킨다.
  • 기존데이터를 집계하는 방법으로 데이터를 사용한다.
import pandas as pd
index = pd.date_range(start='2019-01-01', end = '2019-10-01',freq = 'B')
#freq = B -> Buisness Day
series = pd.Series(range(len(index)),index=index)
series

2019-01-01      0
2019-01-02      1
2019-01-03      2
2019-01-04      3
2019-01-07      4
             ... 
2019-09-25    191
2019-09-26    192
2019-09-27    193
2019-09-30    194
2019-10-01    195
Freq: B, Length: 196, dtype: int64
series.resample(rule='M').sum()
#M : Monthly -> 월말 일자를 기준으로 데이터를 정렬한다.
  • last, first를 호출하여 월말,월초 일자를 확인할 수 있다.
2019-01-31     253
2019-02-28     650
2019-03-31    1113
2019-04-30    1639
2019-05-31    2231
2019-06-30    2370
2019-07-31    3220
2019-08-31    3575
2019-09-30    3864
2019-10-31     195
Freq: M, dtype: int64

참조 : 퀀트 전략을 위한 인공지능 트레이닝(김태헌,신준호 지음)

'파이썬' 카테고리의 다른 글

[Python] JSON to dataframe  (0) 2022.04.04
[Python] Colab(코랩)과 로컬 Pycharm 연동하기  (6) 2021.12.08
[python] tf.constant vs tf.Variable  (0) 2021.09.23
[python] feed_dect, placeholder  (0) 2021.09.23
[python] placeholder 오류  (0) 2021.09.23