Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬(Python)으로 데이터프레임 인덱스에 아시아 시간대 현지화 적용하기

시계열 데이터를 다룰 때 특정 지역의 시간대(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), 비교 작업을 오류 없이 안전하게 수행할 수 있습니다.