개발은 처음이라 개발새발

Timestamp & Period 배열 [python/pandas] 본문

파이썬/판다스

Timestamp & Period 배열 [python/pandas]

leon_choi 2022. 8. 11. 16:39
반응형

판다스에서는 date_range()함수를 사용하면 여러 개의 날짜가 들어 있는 시계열 데이터를 만들 수 있다고 합니다. 이를 Timestamp 배열이라고 하는데요. 이밖에도 기간을 설정하는 Period 배열이 있습니다. 예제들을 통해 한번 어떻게 활용할 수 있는지 알아보도록 하겠습니다. 

 

1.월 시작일 timestamp 배열

import pandas as pd

ts_ms = pd.date_range(start='2022-01-01', #날짜 범위 시작
                      end= None, #날짜 범위 끝
                      periods= 6, #생성할 Timestamp 개수
                      freq = 'MS', #시간 간격(MS: 월의 시작일)
                      tz='Asia/Seoul') #시간대(timezone)

print(ts_ms,'\n')
DatetimeIndex(['2022-01-01 00:00:00+09:00', '2022-02-01 00:00:00+09:00', 
               '2022-03-01 00:00:00+09:00', '2022-04-01 00:00:00+09:00', 
               '2022-05-01 00:00:00+09:00', '2022-06-01 00:00:00+09:00'],
              dtype='datetime64[ns, Asia/Seoul]', freq='MS')

이렇게 판다스에서는 date_range()함수와 다양한 매서드를 통해서 timestamp배열을 표출시킬 수 있습니다. 앞에서는'freq ='MS''를 활용해 월의 시작일을 표출해 봤다면 이번에는 월의 마지막날을 표출하고 한달 간격이 아닌 3개월 간격으로 배열을 나타내 보도록 하겠습니다. 

 

2. 월 마지막일 timestamp배열

ts_me = pd.date_range(start='2022-01-01', #날짜 범위 시작
                      end= None, #날짜 범위 끝
                      periods= 6, #생성할 Timestamp 개수
                      freq = 'M', #시간 간격(M: 월의 마지막일)
                      tz='Asia/Seoul') #시간대(timezone)

print(ts_me,'\n')

ts_3m = pd.date_range(start='2022-01-01', #날짜 범위 시작
                      end= None, #날짜 범위 끝
                      periods= 6, #생성할 Timestamp 개수
                      freq = '3M', #시간 간격(3M: 3개월의 마지막일)
                      tz='Asia/Seoul') #시간대(timezone)

print(ts_3m,'\n')
DatetimeIndex(['2022-01-31 00:00:00+09:00', '2022-02-28 00:00:00+09:00',
               '2022-03-31 00:00:00+09:00', '2022-04-30 00:00:00+09:00',
               '2022-05-31 00:00:00+09:00', '2022-06-30 00:00:00+09:00'],
              dtype='datetime64[ns, Asia/Seoul]', freq='M')

DatetimeIndex(['2022-01-31 00:00:00+09:00', '2022-04-30 00:00:00+09:00',
               '2022-07-31 00:00:00+09:00', '2022-10-31 00:00:00+09:00',
               '2023-01-31 00:00:00+09:00', '2023-04-30 00:00:00+09:00'],
              dtype='datetime64[ns, Asia/Seoul]', freq='3M')

이번에는 period_range() 함수를 해보겠습니다. timestamp는 여러개의 날짜가 있는 것이라면 period 배열은 여러 개의 "기간"이 들어 있는 시계열 데이터를 만듭니다. 바로 코딩을 통해 확인해보겠습니다. 

pr_m = pd.period_range(start='2022-01-01', #날짜 범위 시작
                       end= None, #날짜 범위 끝
                       periods= 3, #생성할 period 개수
                       freq = 'M') #기간 길이(M: 월)
print(pr_m,'\n')
PeriodIndex(['2022-01', '2022-02', '2022-03'], dtype='period[M]')

네 이렇게 2022년의 1월, 2월, 3월이 표출됐는데요. periodindex의 2022-01은 1월 전체 기간을 의미합니다. 즉, 2월과 3월 역시 해당 월의 전체 기간을 의미한다고 볼 수 있습니다. 이번에는 월이 아닌 freq= 매서드에 시간을 넣어 표현해보도록 하겠습니다. 월을 할 때는 freq='M'이었으니 시간은 freq='H'가 되겠죠. 코딩을 보시겠습니다. 

 

pr_h = pd.period_range(start='2022-01-01', #날짜 범위 시작
                       end= None, #날짜 범위 끝
                       periods= 3, #생성할 period 개수
                       freq = 'H') #기간 길이(H: 시간)
print(pr_h,'\n')

pr_2h = pd.period_range(start='2022-01-01', #날짜 범위 시작
                       end= None, #날짜 범위 끝
                       periods= 3, #생성할 period 개수
                       freq = '2H') #기간 길이(H: 시간)
print(pr_2h,'\n')
PeriodIndex(['2022-01-01 00:00', '2022-01-01 01:00', '2022-01-01 02:00'], dtype='period[H]')

PeriodIndex(['2022-01-01 00:00', '2022-01-01 02:00', '2022-01-01 04:00'], dtype='period[2H]')

이렇게  1시간, 2시간 간격으로도 표출을 해봤습니다. 다음편에서는 오늘 배운 timestamp배열과 period배열을 활용해 날짜 데이터를 분리하는 작업을 진행해보도로가 하겠습니다. 

반응형