Aiffel_learning/Data_analysis
2-5. pandas : dt 메소드와 python datetime 모듈
이유29
2024. 6. 6. 21:55
datetime 모듈
from datetime import datetime
https://docs.python.org/ko/3.8/library/datetime.html
datetime — 기본 날짜와 시간 형 — Python 3.8.19 문서
datetime — 기본 날짜와 시간 형 소스 코드: Lib/datetime.py datetime 모듈은 날짜와 시간을 조작하는 클래스를 제공합니다. 날짜와 시간 산술이 지원되지만, 구현의 초점은 출력 포매팅과 조작을 위한
docs.python.org
format code
코드 | 뜻 | 예시 |
%Y | 연도-숫자 4자리 | 0001, 0002, …, 2023, 2024, …, 9998, 9999 |
%y | 연도-숫자 끝 2자리 | 00, 01, …, 99 |
%B | 월-영어이름 | January, February, …, December |
%b | 월-영어약어 | Jan, Feb, Mar, ..... , Nov, Dec |
%m | 월- 숫자 2자리 | 01, 02, …, 12 |
%a | 요일-영어이름 | Sunday, Monday, …, Saturday |
%A | 요일-영어약어 | Sun, Mon, …, Sat |
%d | 요일-숫자 2자리 | 01, 02, …, 31 |
%H | 시간-24시간 | 00, 01, …, 23 |
%I | 시간-12시간제 | 01, 02, …, 12 |
%p | 시간-오전/오후 | AM, PM |
%M | 분-숫자 2자리 | 00, 01, …, 59 |
%S | 초-숫자 2자리 | 00, 01, …, 59 |
%j | day of the year-숫자 3자리 | 001, 002, …, 366 |
strptime(date_string, format) : 주어진 포맷으로 문자열 -> datetime 객체(컴퓨터 용어)로 변환
* 같은 포맷끼리의 datatime 객체는 연산도 가능함!
strftime(format) : 주어진 포맷에 따라 객체 -> 문자열(사용자 친화적 용어) 로 변환
# strptime
datetime.strptime('2023-01-01', '%Y-%m-%d')
>>> datetime.datetime(2023, 1, 1, 0, 0) # 이걸 sample_date 변수에 할당
# strftime
datetime.strftime(sample_date, '%y-%b-%d')
>>> '23-Jan-01'
datetime.strftime(sample_date, '%Y-%m-%d')
>>> '2023-01-01'
# 원하는 부분 뽑아내기
sample_date.year
>>> 2023
sample_date.month
>>> 1
- time.sleep(a) : 프로그램이 a초 지연됨
- time.localtime() : 년도(tm_year), 월(tm_mon), 일(tm_day), 시(tm_hour), 분(tm_min), 초(tm_sec), 요일(tm_wday;월:0~일:6), 올해의 몇번째 날(tm_yday), 썸머타임 여부(tm_isdst;-1,0,1) 내용이 담긴 튜플로 출력됨
pandas - dt 메소드
dt 메소드는 pandas 시리즈의 날짜와 시간 데이터를 조작하는 데 사용됨.
주로 날짜와 시간의 추출, 변환, 차이 계산 등의 작업을 수행.
주요 기능
- 날짜/시간 속성 추출: dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second
- 날짜/시간 변환: dt.normalize(), dt.tz_localize(), dt.tz_convert()
- 날짜/시간 차이 계산: dt.floor(), dt.ceil(), dt.round()
- 날짜/시간 포맷 변경: dt.strftime()
#pandas to_datetime 메서드 사용해서 object -> datetime으로 type 변경
data['t_date'] = pd.to_datetime(data['t_date'])
# dt 붙여줘야 datetime 항목에 적용가능(str처럼)
data['t_date'].dt.year
data['t_date'].dt.year
* 사고날짜 '1912-04-15' 기준 티켓을 얼마나 일찍 구매했는지 계산해보자
acc = datetime.strptime('1912-04-15', '%Y-%m-%d')
data['buy_before'] = acc - data['t_date']
>>>
0 94 days
1 17 days
2 52 days
3 18 days
4 12 days
...
>>> type = timedelta64[ns] # timedelta type = 시간간격 타입
# 숫자만 뽑아내고 싶다면
data['buy_before'].dt.days
>>>
0 94
1 17
2 52
3 18
4 12
..
>>> type = int64