DateTimeIndex의 날짜가 해당 월의 첫 번째 날(1일)인지 확인하려면 DateTimeIndex.is_month_start 속성을 사용하면 됩니다. 이 속성은 인덱스에 포함된 각 날짜에 대해 월의 시작일 여부를 불리언(Boolean) 배열 형태로 반환하므로, 대량의 시계열 데이터에서 특정 조건의 날짜를 필터링할 때 매우 유용합니다.
라이브러리 임포트
먼저 필요한 라이브러리를 임포트합니다.
import pandas as pd
DatetimeIndex 생성
시작 날짜 '2021-9-21 02:30:50'부터 총 6개의 날짜를 생성하되, 빈도(freq)는 '5D', 즉 5일 간격으로 설정합니다. 시간대(timezone)는 호주 애들레이드(Australia/Adelaide)로 지정합니다.
datetimeindex = pd.date_range('2021-9-21 02:30:50', periods=6, tz='Australia/Adelaide', freq='5D')
생성된 DateTimeIndex를 화면에 출력해 보겠습니다.
print("DateTimeIndex...\n", datetimeindex)
이제 DateTimeIndex의 각 날짜가 해당 월의 1일인지 확인합니다.
print("\nCheck whether the date in DateTimeIndex is the first day of the month...\n",
datetimeindex.is_month_start)
전체 예제 코드
다음은 위의 과정을 모두 포함한 완전한 예제 코드입니다.
import pandas as pd
# 기간 6개, 빈도 '5D'(5일 간격)로 DatetimeIndex 생성
# 시간대는 Australia/Adelaide로 지정
datetimeindex = pd.date_range('2021-9-21 02:30:50', periods=6, tz='Australia/Adelaide', freq='5D')
# DateTimeIndex 출력
print("DateTimeIndex...\n", datetimeindex)
# DateTimeIndex의 빈도 출력
print("DateTimeIndex frequency...\n", datetimeindex.freq)
# 각 날짜가 해당 월의 1일인지 확인
print("\nCheck whether the date in DateTimeIndex is the first day of the month...\n",
datetimeindex.is_month_start)
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeIndex... DatetimeIndex(['2021-09-21 02:30:50+09:30', '2021-09-26 02:30:50+09:30', '2021-10-01 02:30:50+09:30', '2021-10-06 02:30:50+10:30', '2021-10-11 02:30:50+10:30', '2021-10-16 02:30:50+10:30'], dtype='datetime64[ns, Australia/Adelaide]', freq='5D') DateTimeIndex frequency... <5 * Days> Check whether the date in DateTimeIndex is the first day of the month... [False False True False False False]
결과 해석
출력 결과를 살펴보면, 불리언 배열 [False False True False False False] 중 세 번째 요소만 True입니다. 세 번째 날짜가 바로 '2021-10-01', 즉 10월의 첫날이기 때문입니다. 나머지 날짜들은 각 월의 시작일이 아니므로 모두 False로 반환되었습니다.
참고로 비슷한 성질의 속성으로 is_month_end(월의 마지막 날), is_quarter_start(분기 시작일), is_year_start(연도 시작일) 등이 있으며, 필요에 따라 함께 활용하면 시계열 데이터 분석이 더욱 편리해집니다.