datetime 라이브러리는 날짜와 시간을 처리하는 다양한 기능을 제공하는 파이썬 라이브러리이다.
- date: 날짜 처리 오브젝트
- time: 시간 처리 오브젝트
- datetime: 날짜, 시간 처리 오브젝트
datetime 라이브러리를 사용하기 위해서는 datetime 패키지에서 datetime 라이브러리를 불러오면 된다.
from datetime import datetime
현재 날짜와 시간을 출력하는 방법으로는 now, today 메소드가 있다.
datetime.now() 또는 datetime.today()를 통해 현재 날짜와 시간을 알 수 있다.
datetime 객체는 (년, 월, 일, 시, 분, 초, 밀리초) 형식으로 구성되어 있고, print를 이용하면 년-월-일 시:분:초.밀리초 형식으로 출력된다.
직접 datetime 객체를 만들 수도 있다.
datetime()의 매개변수로 (년, 월, 일, 시, 분, 초, 밀리초)를 원하는 대로 전달해 주면 그대로 datetime 객체가 생성된다.
위 예시의 t2를 통해 연월일까지만 전달하면 시분초에는 00:00:00이 들어가는 걸 볼 수 있다.
datetime 객체는 시간 계산을 할 수 있다는 것이 가장 큰 장점이다.
날짜의 차이, 시간의 차이 모두 마이너스(-) 연산을 통해 가능하다.
다음과 같이 now라는 datetime 객체가 있을 때 필요한 부분만 잘라내기 위해서는 strftime 메소드를 사용할 수 있다.
연월일 부분만 필요하다면 strftime('%Y-%m-%d') 또는 strftime('%y-%m-%d')을 통해 뽑아낼 수 있다.
대문자 Y를 쓰면 연도를 4자리로 나타내고, 소문자 y를 쓰면 연도를 2자리로 나타낸다.
시간 부분만 필요하다면 strftime('%H:%M:%S')를 통해 뽑아낼 수 있다.
날짜와 달리 시간은 쌍점(콜론 :)을 이용해 구분한다.
strftime에 사용되는 시간 형식 지정자는 아래 표와 같다.
시간 형식 지정자 | 의미 | 결과 |
%a | 요일 출력 | Sun, Mon, ..., Sat |
%A | 요일 출력(긴 이름) | Sunday, Monday, ... Saturday |
%w | 요일 출력(숫자) | 0(일), 1(월), 2(화), 3(수), 4(목), 5(금), 6(토) |
%d | 날짜 출력(2자리) | 01, 02, ..., 31 |
%b | 월 출력 | Jan, Feb, ..., Dec |
%B | 월 출력(긴 이름) | January, Feburary, ..., December |
%m | 월 출력(숫자) | 01, 02, ..., 12 |
%y | 년 출력(2자리) | 00, 01, ..., 99 |
%Y | 년 출력(4자리) | 0001, 0002, ..., 9999 |
%H | 시간 출력(24시간) | 00, 01, ..., 23 |
%l | 시간 출력(12시간) | 01, 02, ..., 12 |
%M | 분 출력(2자리) | 00, 01, ..., 59 |
%S | 초 출력(2자리) | 00, 01, ..., 59 |
'2018-05-16'과 같은 문자열 형식으로 이루어진 Series를 to_datetime 메소드를 통해 datetime 형식으로 바꿔주었다.
datetime 오브젝트의 year, month, day 속성을 이용하면 datetime 형식의 데이터에서 연, 월, 일을 추출할 수 있다.
이제, 다음과 같은 데이터프레임에서 year, month, day 컬럼을 만들 것이다.
date_dt는 Date를 datetime 형식으로 바꾼 컬럼이다.
df['date_dt'] = pd.to_datetime(df['Date'])
date_dt 컬럼에서 year, month, day을 추출하기 위해서는 date_dt 컬럼을 dt 접근자로 한 번에 접근하여 year, month, day 속성을 이용한다.
df['year'] = df['date_dt'].dt.year
df['month'] = df['date_dt'].dt.month
df['day'] = df['date_dt'].dt.day
문자열 형식의 Date 컬럼을 datetime 객체로 바꿔 date_dt 컬럼을 만들었고, 이 date_dt 컬럼에서 연, 월, 일을 추출하면 year, month, day는 정수형이다.