개발은 처음이라 개발새발
Timestamp & Period 배열 [python/pandas] 본문
판다스에서는 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배열을 활용해 날짜 데이터를 분리하는 작업을 진행해보도로가 하겠습니다.
'파이썬 > 판다스' 카테고리의 다른 글
파이썬 날짜 인덱스 활용 - 시계열 데이터 활용2 [python/pandas] (0) | 2022.08.12 |
---|---|
파이썬 날짜 분리 - 시계열 데이터 활용1 [python/pandas] (0) | 2022.08.11 |
파이썬 데이터 정규화[python/pandas] (0) | 2022.08.07 |
누락 데이터 치환하기 2 [python/pandas] (1) | 2022.07.29 |
누락 데이터 치환하기1 [python/pandas] (2) | 2022.07.28 |