데이터 분석을 진행하면서, 일간 데이터를 주간 데이터로 재가공할 일이 있었다.
Pandas 에서는 다음과 같이 데이터를 리샘플링(resample)할 수 있었다.
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.resample.html
내가 사용할 수준만 정리하면 다음과 같다.
일단 더미데이터를 다음과 같이 간단히 준비하려 한다.
import pandas as pd
df= pd.DataFrame()
t = []
for e in range(1, 30):
t.append(f"2021-1-{e}")
df["time"] = t
df["data"] = [e for e in range(30 - 1)]
현재 df 데이터 프레임의 각 컬럼 별 타입은 다음과 같다.
time 컬럼은 현재 문자열 (object) 타입이다.
이걸 datetime 타입 등의 시계열 타입으로 일단 변경해야,
resample() 함수를 사용할 수 있다.
pandas.to_datetime() 함수를 사용해서
다음과 같이 time 컬럼을 datetime 타입으로 바꿔주자.
df.time = pd.to_datetime(df.time)
이제 datetime 타입이 되었다.
이제 resample() 함수를 사용해서, 일주일 단위로 데이터를 재가공해보자.
resample() 함수는 디폴트로는 index 를 기준으로 집계를 진행하지만,
on 인자를 통해 샘플링 대상 컬럼을 지정할 수 있다.
또, 재집계 단위는 rule 인자로 지정할 수 있다.
time 컬럼을 이용해서, 1주일 단위로 재집계를 진행해보자.
집계 결과는 groupby 함수처럼 별개의 객체로 리턴되며,
이 객체를 통해 내가 원하는 결과를 얻을 수 있다.
나는 주간 데이터 합계가 필요하기 때문에, sum() 을 적용할 예정이다.
resampled = df.resample(rule='1W', on='time')
resampled.sum()
이렇게 일간 데이터를 주간 데이터로 바꿀 수 있다.
'Python' 카테고리의 다른 글
iPad에서 Python 배우기 - Carnet 모듈 설치하기 (0) | 2023.03.18 |
---|---|
Pandas : 데이터 집계 - 범위로 그룹화 하기 (0) | 2021.08.30 |
Python : 확률 이항 검정 (0) | 2021.04.11 |
Pandas : 데이터 필터링하기 #2 (열 단위 데이터 추출) (0) | 2021.01.29 |
Pandas : 데이터 필터링하기 #1 (행 단위 데이터 추출) (0) | 2021.01.29 |