1. yfinance 로 삼성전자의 종가를 가져오기
(yfinance pkg 설치 후 종목코드.KS로 정보를 가져올수 있다. 종가만 필요해서 Close만 가져올 경우)
import yfinance as yf
df = yf.download('005930.KS', start = "2023-01-01")["Close"].to_frame()
df.columns=["Samsung"]
df.head()
2. shift, diff, pct_change
shift 명령어는 행을 periods 만큼 이동시킨다.
diff는 period와 차이를 계산한다. (아래 결과에서 df.Samsung - df.shift 결과와 동일하다)
pct_change 명령어는 period 차이의 percent를 계산한다.
df["shift"] = df.Samsung.shift(periods=1)
df["diff"] = df.Samsung.diff(periods=1)
df["pct_change"] = (df.Samsung.pct_change(periods=1)*100).round(3)
df.head()
pct_change 결과로 전날과 등락율을 표시하게 된다.
3. resample, rolling
rolling는 구간 계산이 필요할 경우 사용하는 명령어이다.
예를들어, 이전 7일간 평균이나, 이전 3일간 최대값등을 계산해야할때 사용할 수 있다.
rolling함수를 이용하면 이동 평균을 구할 수 있다.
일자별 그래프가 등락이 심한경우, rolling으로 window크기를 지정해서 평균값으로 표현할 수 있다.
만약 windows를 7로 했을때 1주일의 평균값으로 plot을 그리게 되면 좀더 부드러운 그래프를 그릴 수 있다.
df["rolling"] = df.Samsung.rolling(window=3).mean().round(3)
df.head()
다음은 시계열 인덱스의 groupby와 유사한 resample함수이다.
resample함수는 Datetime index에서, 시간간격으로 group할 수 있는 함수이다.
DataFrame.resample(rule, axis=0, closed=None, label=None, convention='start', kind=None, on=None, level=None, origin='start_day', offset=None, group_keys=False)
인자가 많은데, 많이 사용하는인자는 rule과 kind이다.
rule : resample을 할 기준이다. Y(년), Q(분기), M(월), 주(w), 일(D), 시(S), T(시)등이고 3D등과 같이 주기를 지정할 수 있다.
kind : timestamp와 period가 있다. Datetime의 index레 DateTimeIndex와 PeriodIndex가 있는데 resample이후 index종류를 결정할 수 있다.
rlue에 따른 샘플링 결과
kind를 period로 했을 때 결과 (datetime index가 좀더 직관적으로 표시된다)
3. datetime index의 인덱스와 슬라이스
DataTimeIndex를 사용했을때 유용한점은 Index와 Slice가 편리하다는 점이다.
2023년 5월의 데이터만 보고 싶은경우
2023년 5월에서 6월의 데이터만 보고 싶은경우
ex) 만약 7월 1일 이후 날짜만 보고 싶을 경우 df.loc[ df.index > '2023-07-01'] 나 df.loc["2023-07-01":] 처럼 사용할 수 도 있다.
요일의 행을 추가하고 싶은경우
'전처리' 카테고리의 다른 글
feature_selection (변수 선택 법) (0) | 2023.08.03 |
---|---|
Seaborn (0) | 2023.08.01 |
Matplotlib 라이브러리 (0) | 2023.07.04 |
범주형데이터처리 - get_dummies, Label Encoder, OneHotEncoding (1) | 2023.06.22 |
결측치 처리 (0) | 2023.06.22 |