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