[30일차]시계열 제어 - 기간과 기간 인덱스

김준석·2024년 1월 8일

**특정 시간(Timestamp) vs 기간(Period) vs 기간인덱스(PeriodIndex)**

이 세가지 메소드를 비교 해보자 .**Period()** 는 저번 시간에서 본 인자랑은 다른 내용이다.

Timestamp()

몇시 몇분 몇초를 의미

pd.Timestamp('2024-12-31')

출력값 : Timestamp('2024-12-31 00:00:00')

이 값이 모이면 DatetimeIndex 가 된다.

Period()

특정 날을 의미

pd.Period('2024-12-31')

출력값 : Period('2024-12-31', 'D')

Day의 D가 같이 출력 된다.

하루의 시작과 끝. 하루 전체를 의미

이 값이 모이면 PeriodIndex 가 된다.

PeriodIndex vs DatetimeIndex

  • PeriodIndex : 기간 단위의 정보 vs DatetimeIndex : 날짜와 시간의 정밀한 정보
  • dtype이 period[D], period[M] ... vs datetime64[ns]

PeriodIndex:

  • 주어진 기간('2024-01', '2024-02', 등)을 나타내는 Period 객체의 배열로 구성
  • 각 원소는 해당 기간에 대한 정보
    • 일반적으로 연, 월, 분기, 반기 등의 기간 단위를 표현하고 저장
  • dtype은 'period[M]'으로 표시되며, M은 월 단위
    • '2024-01'은 2024년 1월을 나타내는 Period 객체

DatetimeIndex

  • 주어진 날짜('2024-01-31', '2024-02-29', 등)를 나타내는 Timestamp 객체의 배열로 구성
  • 각 원소는 해당 날짜와 시간에 대한 정보를 표현하고 저장
  • dtype은 'datetime64[ns]'로 표시되며, ns는 나노초 단위의 정밀도를 나타냄
    • '2024-01-31'은 2024년 1월 31일을 나타내는 Timestamp 객체

Period + range = period_range() = PeriodIndex

이전에 배웠던 date_range()period_range() 의 차이를 한번보자.

  • period_range()
pd.period_range('2024-01-01','2024-12-31',freq='M')

비교하기 쉽게 하기 위해 freq=’M’ 으로 월단위로 뽑아봤다.

  • period_range()period()의 특성에 맞게 특정 일을 기준으로 가져온다. 이때 월 단위이기 때문에 각 월별로 가져온다.

  • PeriodIndex 객체로 가져옴

  • date_range()

# 비교
pd.date_range('2024-01-01','2024-12-31',freq='M')

  • 하지만 date_range() 는 타임 스탬프이기때문에 가려졌지만 초단위 까지 가져온다.
  • DatetimeIndex 객체로 가져온다.

PeriodIndex <-> DatetimeIndex 변환

가끔 데이트 타입을 변환해 줘야 될 때가 있다.

  • to_period() : DatetimeIndex > PeriodIndex
  • to_timestamp() : PeriodIndex > DatetimeIndex

DatetimeIndex > PeriodIndex 으로 변환

아래 데이터를 PeriodIndex로 변환해보자.

# DatetimeIndex > PeriodIndex
a = pd.date_range('2024-01-01','2024-12-31',freq='M')

a.to_period()

PeriodIndex 객체로 변환되어 나온다.

0개의 댓글