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

Python Pandas – DateTimeIndex에서 dayofweek로 요일 추출하기

특정 시계열 빈도(frequency)를 가진 DateTimeIndex에서 요일(day of week)을 추출하려면 DateTimeIndex.dayofweek 속성을 사용하면 됩니다.

dayofweek 속성은 각 날짜가 한 주 중 몇 번째 요일인지를 정수 형태로 반환합니다. 이때 주는 월요일(0)에 시작하여 일요일(6)에 끝나는 것으로 계산됩니다.

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

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

import pandas as pd

2단계: DateTimeIndex 생성

시작 날짜, 기간(periods), 시간대(tz), 빈도(freq)를 지정하여 DateTimeIndex를 생성합니다. 여기서는 총 6개의 날짜를 생성하고, 빈도는 '3D', 즉 3일 간격으로 설정했습니다.

datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Sydney', freq='3D')

'3D'는 3일마다 하나씩 날짜를 생성한다는 의미입니다. 또한 tz 매개변수를 사용하면 특정 시간대(여기서는 호주 시드니)에 맞춘 날짜 인덱스를 만들 수 있습니다.

3단계: DateTimeIndex 빈도 확인

생성된 인덱스의 빈도(freq)를 출력하여 확인해 보겠습니다.

print("DateTimeIndex frequency...\n", datetimeindex.freq)

4단계: dayofweek로 요일 추출

dayofweek 속성을 호출하면 각 날짜에 해당하는 요일이 숫자로 반환됩니다. 앞서 언급했듯이 월요일은 0, 일요일은 6으로 표현됩니다.

print("\nGet the day of week..\n", datetimeindex.dayofweek)

전체 예제 코드

지금까지의 과정을 하나의 코드로 정리하면 다음과 같습니다.

import pandas as pd

# periods=6, 빈도 '3D'(3일 간격)인 DatetimeIndex 생성
# 시간대는 Australia/Sydney로 지정
datetimeindex = pd.date_range('2021-10-20 02:30:50', periods=6, tz='Australia/Sydney', freq='3D')

# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)

# DateTimeIndex 빈도 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)

# dayofweek로 요일 추출
# 주는 월요일(0)에 시작하고 일요일(6)에 끝남
print("\nGet the day of week..\n", datetimeindex.dayofweek)

출력 결과

DateTimeIndex...
DatetimeIndex(['2021-10-20 02:30:50+11:00', '2021-10-23 02:30:50+11:00',
'2021-10-26 02:30:50+11:00', '2021-10-29 02:30:50+11:00',
'2021-11-01 02:30:50+11:00', '2021-11-04 02:30:50+11:00'],
dtype='datetime64[ns, Australia/Sydney]', freq='3D')
DateTimeIndex frequency...
<3 * Days>

Get the day of week..
Int64Index([2, 5, 1, 4, 0, 3], dtype='int64')

결과 해석

출력된 값 [2, 5, 1, 4, 0, 3]을 날짜와 함께 살펴보면 다음과 같습니다.

  • 2021-10-20 → 2 (수요일)
  • 2021-10-23 → 5 (토요일)
  • 2021-10-26 → 1 (화요일)
  • 2021-10-29 → 4 (금요일)
  • 2021-11-01 → 0 (월요일)
  • 2021-11-04 → 3 (목요일)

숫자 대신 실제 요일 이름('Monday', 'Tuesday' 등)을 얻고 싶다면 day_name() 메서드를 사용하면 됩니다.

# 실제 요일 이름 가져오기
print(datetimeindex.day_name())