시계열 데이터를 다룰 때 특정 지역의 시간대(timezone)를 명확하게 지정해야 하는 경우가 자주 있습니다. 이 글에서는 판다스(pandas)를 활용해 데이터프레임의 인덱스에 아시아 시간대(Asia/Calcutta)를 현지화(localize)하는 방법을 알아보겠습니다.
먼저 최종 결과부터 확인해 보겠습니다. 주어진 시계열 데이터에 아시아 시간대를 현지화하면 다음과 같은 결과를 얻을 수 있습니다.
Index is:
DatetimeIndex(['2020-01-05 00:30:00+05:30', '2020-01-12 00:30:00+05:30',
'2020-01-19 00:30:00+05:30', '2020-01-26 00:30:00+05:30',
'2020-02-02 00:30:00+05:30'],
dtype='datetime64[ns, Asia/Calcutta]', freq='W-SUN')해결 방법
아래 단계를 따라 시간대 현지화를 구현할 수 있습니다.
- 데이터프레임을 정의합니다.
pd.date_range()함수를 사용하여 시계열을 생성합니다. 시작 시점은 '2020-01-01 00:30'으로 설정하고, periods=5, tz='Asia/Calcutta' 옵션을 지정한 뒤 그 결과를 time_index 변수에 저장합니다.- time_index에 저장된 현지화된 시간대를 데이터프레임의 인덱스(df.index)로 설정합니다.
- 마지막으로 현지화된 시간대를 출력하여 확인합니다.
시계열 생성 코드
time_index = pd.date_range('2020-01-01 00:30', periods = 5, freq ='W',tz = 'Asia/Calcutta')인덱스 설정
df.index = time_index
전체 예제 코드
아래 전체 코드를 통해 더 자세히 이해해 보겠습니다.
import pandas as pd
df = pd.DataFrame({'Id':[1,2,3,4,5],
'City':['Mumbai','Pune','Delhi','Chennai','Kolkata']})
time_index = pd.date_range('2020-01-01 00:30', periods = 5, freq ='W', tz = 'Asia/Calcutta')
df.index = time_index
print("DataFrame is:\n",df)
print("Index is:\n",df.index)출력 결과
DataFrame is:
Id City
2020-01-05 00:30:00+05:30 1 Mumbai
2020-01-12 00:30:00+05:30 2 Pune
2020-01-19 00:30:00+05:30 3 Delhi
2020-01-26 00:30:00+05:30 4 Chennai
2020-02-02 00:30:00+05:30 5 Kolkata
Index is:
DatetimeIndex(['2020-01-05 00:30:00+05:30', '2020-01-12 00:30:00+05:30',
'2020-01-19 00:30:00+05:30', '2020-01-26 00:30:00+05:30',
'2020-02-02 00:30:00+05:30'],
dtype='datetime64[ns, Asia/Calcutta]', freq='W-SUN')핵심 포인트 정리
- pd.date_range(): 시작 날짜, 생성할 기간 수(periods), 빈도(freq), 시간대(tz)를 지정하여 DatetimeIndex를 만드는 함수입니다.
- tz 매개변수: 'Asia/Calcutta'처럼 IANA 시간대 이름을 지정하면 해당 지역의 표준시(UTC+5:30)가 자동으로 적용됩니다.
- freq='W': 주간(일요일 기준) 빈도로 날짜를 생성하며, 출력 결과에서 freq='W-SUN'으로 표시됩니다.
- 이렇게 현지화된 인덱스를 사용하면 시간대 관련 연산, 변환(convert), 비교 작업을 오류 없이 안전하게 수행할 수 있습니다.