Python

Resample, 시간대, 월, 년, 일별 데이터 값 계산

summerorange 2022. 4. 28. 19:04
반응형

안녕하세요! 이번에는 pandas. resample에 관련한 코드를 한 번 정리해보았습니다:) 호호.

우선 파라미터 값 부터.

DataFrame.resample(rule, axis=0, closed=None, label=None, 
convention='start', kind=None, loffset=None, base=None, on=None, 
level=None, origin='start_day', offset=None)

시간 데이터를 분석할 때 연, 월, 일 단위로 다시 열로 만들어서 분석하는 경우도 있는데 resample 함수를 활용하면 rawdata만 활용해서 분석할 수 있어서 좀 더 편리합니다.

년도-월-일로 되어 있던 데이터에서 년도를 추출하고 해당 평균과 관련해서 bar graph를 만들어본 코드

df.groupby("Year").mean()[['구매금액']].plot.bar()

단순히  리샘플링해서 만든 코드.

df.resample('Y').mean().plot.bar(figsize=(12,8))

 

리샘플링 별칭 정리

B 영업일 기준 빈도 Business day frequency
C 사용자 정의한 영업일 기준 빈도 Custom Business day frequency
D 일 빈도 Calendar day frequency
W 주간 빈도 Weekly frequency
M 월 빈도 Month end frequency
SM 15일 기준 빈도 semi-month end frequency
BM 영업 종료 월 빈도 business month end frequency
CBM 사용자 정의 기준 비지니스 우러 빈도 cusom business month end frequency
MS 월 시작 빈도 month start frequency
SMS 15일 기준으로 시작 기준인 빈도 semi-month start frequncy (1st and 15th)
BMS 영업 월 시작 기준 빈도 Business month start frequency
CBMS 사용자 정의 비지니스 월 시작기준 빈도 Custom Business month start frequency
Q 분기 기준 quarter end freqency
BQ 사업 분기 빈도 business quarter end frequency
QS 분기 시작 빈도 business start frequency
BQS 비지니스 분기 시작 빈도 business quarter start frequency
A, Y 연말 끝 기준 빈도 year end frequency
BA, BY 사업 연도 business year end frequency
AS, YS 연도 시작 빈도 year start frequency
BAS, BYS 사업 연도 시작 빈도 business year start frequency
BH 영업 시간 빈도 business hour frequency
H 시간 당 빈도 hourly frequency
T, min 분 당 빈도 minutely frequency
S 초 당 빈도 secondly frequency
L, ms 밀리초 당 빈도 miliseconds
U, us 마이크로 초 기준 빈도 microseconds
N 나노 초 빈도 nanoseconds

예를 들어 다음과 같은 날짜 데이터가 있다고 할 때, 

index = pd.date_range('1/1/2020', periods=15, freq='T')
series = pd.Series(np.random.randn(15), index=index)
test = pd.DataFrame(series)

test.resample('M').mean()

결과 값은 월 말을 기준으로 평균값이 나타나게 됩니다.

연도 시작을 기준으로 하기 위해서는,

요렇게 1월 1일 기준으로 나타납니당.

초당 빈도 중에서 3초 간격으로 평균값을 알고 싶다면

test.resample('3T').mean()

이런 식으로 하면

이렇게 간단하게 평균값에 대해서 자동으로 시간을 리샘플링할 수 있습니다. 일단 오늘은 여기까지!

 

반응형