반응형
# 라이브러리 import
import numpy as np
from datetime import datetime
from pandas.tseries.offsets import BDay
from pandas.tseries.offsets import MonthEnd, BMonthEnd
판다스 라이브러리를 활용하여, 간단하게 오늘날짜 및 영업일 계산, 그리고 달의 마지막 날을 구해보겠다.
1. 오늘 날짜 'YYYY-MM-DD' 형식으로 뽑기
today = datetime.today()
now = datetime.now()
todayDate = today.strftime('%Y-%m-%d')
nowDatetime = now.strftime('%Y-%m-%d %H:%M:%S')
print(todayDate)
# result : '2021-09-30'
print(nowDatetime)
# results '2021-09-30 12:20:03'
2. 오늘날짜 기준, Working Day로 혹은 Business Day로 (영업일) 며칠 전, 며칠 후의 날짜 계산하기
(datetime.today() - BDay(1)).strftime('%Y-%m-%d')
# result : '2021-09-29'
# BDay 연산은 datetime 형식끼리 가능하다. 따라서 이미 String화 되어있는 날짜와 연산을 하기 위해선 datetime 형식으로 변환 후 연산 할 수 있도록 한다.
transDate = (pd.to_datetime(todayDate) - BDay(1)).strftime(%Y-%m-%d)
# >>> '2021-09-29'
transDateTime = (pd.to_datetime(nowDatetime) - BDay(1)).strftime(%Y-%m-%d %H:%M:%S)
# >>> '2021-09-29 12:20:03'
3. 날짜간 일 수 계산 (+ 영업일로 계산)
# 그냥 날짜로 계산
pd.to_datetime('2022-02-01') - pd.to_datetime('2022-02-11')
# >>> Timedelta('-10 days +00:00:00')
# 영업일로 계산
np.busday_count(begindates='2022-02-01', enddates='2022-02-11')
# >>> 8
4. 두 날짜 사이의 날짜 리스트 얻기
# 두 날짜간 날짜 리스트 반환
pd.date_range(start='2022-02-01', end='2022-02-11')
# >>>
# DatetimeIndex(['2022-02-01', '2022-02-02', '2022-02-03', '2022-02-04',
# '2022-02-05', '2022-02-06', '2022-02-07', '2022-02-08',
# '2022-02-09', '2022-02-10', '2022-02-11'],
# dtype='datetime64[ns]', freq='D')
# 두 날짜간 영업일 리스트 반환
pd.bdate_range(start='2022-02-01', end='2022-02-11')
# >>>
# DatetimeIndex(['2022-02-01', '2022-02-02', '2022-02-03', '2022-02-04',
# '2022-02-07', '2022-02-08', '2022-02-09', '2022-02-10',
# '2022-02-11'],
# dtype='datetime64[ns]', freq='B')
5. 달의 마지막 날 계산하기
# 이 달의 마지막 날 구하기
'''
MonthEnd(숫자) -> 달의 마지막 날 구하기
BMonthEnd(숫자) -> 달의 마지막 영업일 구하기
# 숫자 만큼의 달을 Shifting 하며 구할 수 있다.
'''
(datetime.today() + MonthEnd()).strftime('%Y-%m-%d')
# today : '2021-09-18'
# results : '2021-09-30'
(부록) 달의 마지막 날 계산시 위의 함수가 동작 되지 않을 때.
끄읏
반응형
'Development > Python' 카테고리의 다른 글
Pandas Merge시 행 증가하는 문제 원인 및 해결 (0) | 2021.10.01 |
---|---|
[Python] Numa Node 0 에러 메세지 해결 (0) | 2021.09.30 |
[Python] 한 Column에 대해서 Dictionary를 이용해 값을 바꾸는 방법 (0) | 2021.09.30 |
[Python] Pandas Dataframe 중복제거하기 (0) | 2021.09.29 |
[Linux / Python] Nvidia Driver, CUDA, Tensorflow Version Compatibility 맞추기 (버전 호환성 맞추기) (0) | 2021.09.07 |
댓글