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

Python Pandas – PeriodIndex 객체의 문자열 표현 형식 지정하기

Pandas에서 PeriodIndex 객체의 문자열 표현을 원하는 형식으로 지정하려면 periodIndex.strftime() 메서드를 사용합니다. 이 메서드는 날짜·시간 형식 지정자(directive)를 인수로 받아, 인덱스에 포함된 각 기간(Period)을 해당 형식에 맞춘 문자열로 변환해 줍니다.

1단계: 필요한 라이브러리 임포트하기

가장 먼저 pandas 라이브러리를 임포트합니다.

import pandas as pd

2단계: PeriodIndex 객체 생성하기

PeriodIndex는 시간상 규칙적인 기간을 나타내는 서수(ordinal) 값들을 담고 있는 불변(immutable) ndarray입니다. 날짜 문자열 리스트와 함께 freq 매개변수로 빈도를 지정하면 객체를 손쉽게 만들 수 있습니다.

periodIndex = pd.PeriodIndex(['2021-09-25 07:30:35', '2019-10-30 04:15:45',
'2020-07-15 02:55:15', '2022-06-25 09:40:55'], freq="Y")

여기서 freq="Y"는 연간(annual) 빈도를 의미합니다.

3단계: PeriodIndex 객체 출력하기

생성된 PeriodIndex 객체를 화면에 출력해 내용을 확인합니다.

print("PeriodIndex...\n", periodIndex)

4단계: strftime()으로 형식 지정하기

다양한 형식 지정자를 조합해 문자열 표현을 변환합니다. 이 예제에서는 다음과 같은 지정자를 사용했습니다.

  • %b : 축약된 월 이름 (예: Dec)
  • %d : 일 (01~31)
  • %Y : 4자리 연도
  • %A : 요일 전체 이름 (예: Friday)
print("\nString representation (format with different directives)...\n",
periodIndex.strftime('%b. %d, %Y was a %A'))

참고로, 연간(Y) 빈도의 PeriodIndex는 각 기간을 해당 연도의 마지막 날인 12월 31일을 기준으로 표현하기 때문에, 결과가 모두 "Dec. 31"로 나타납니다.

전체 예제 코드

지금까지의 과정을 하나로 묶은 전체 코드는 다음과 같습니다.

import pandas as pd

# PeriodIndex 객체 생성
# PeriodIndex는 시간상 규칙적인 기간을 나타내는 서수 값을 저장하는 불변 ndarray입니다.
# "freq" 매개변수를 사용해 빈도를 설정했습니다.
periodIndex = pd.PeriodIndex(['2021-09-25 07:30:35', '2019-10-30 04:15:45',
'2020-07-15 02:55:15', '2022-06-25 09:40:55'], freq="Y")

# PeriodIndex 객체 출력
print("PeriodIndex...\n", periodIndex)

# PeriodIndex의 빈도(freq) 객체 출력
print("\nPeriodIndex frequency object...\n", periodIndex.freq)

# PeriodIndex의 빈도를 문자열로 출력
print("\nPeriodIndex frequency object as a string...\n", periodIndex.freqstr)

# 형식이 지정된 결과 출력
print("\nString representation (format with different directives)...\n",
periodIndex.strftime('%b. %d, %Y was a %A'))

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

PeriodIndex...
PeriodIndex(['2021', '2019', '2020', '2022'], dtype='period[A-DEC]')

PeriodIndex frequency object...
<YearEnd: month=12>

PeriodIndex frequency object as a string...
A-DEC

String representation (format with different directives)...
Index(['Dec. 31, 2021 was a Friday', 'Dec. 31, 2019 was a Tuesday', 'Dec. 31, 2020 was a Thursday', 'Dec. 31, 2022 was a Saturday'],
dtype='object')

이처럼 strftime() 메서드를 활용하면 PeriodIndex의 날짜 정보를 보고서나 대시보드 등에 바로 활용할 수 있는 가독성 높은 문자열로 자유롭게 변환할 수 있습니다.