본문 바로가기

Computer/Pandas

Pandas - datetime64 타입

반응형

Pandas에서는 datetime64 라는 일자와 시간을 표기하는 타입을 지원합니다. 문자열로 되어있는 일자 (연월일)나 시간 (시분초)를 to_datetime이라는 함수로 datetime64 타입으로 변환할 수 있습니다.

datetime64

먼저 예제를 하나 생성해 보겠습니다.

df = pd.DataFrame({'Birth':['2019-01-01 09:10:00',
                            '2019-01-08 09:20:30',
                            '2019-02-01 10:20:00',
                            '2019-02-02 11:40:50',
                            '2019-02-28 15:10:20',
                            '2019-04-10 19:20:50',
                            '2019-06-30 21:20:50',
                            '2019-07-20 23:30:59']})

df.dtypes를 통해 Birth column은 문자열임을 알 수 있습니다. to_datetime을 통해 Birth column을 datetime64 타입으로 바꿀 수 있습니다.

df['Birth'] = pd.to_datetime(df['Birth'], format='%Y-%m-%d %H:%M:%S', errors='raise')

df.dtypes를 통해 Birth column이 datetime64로 바꿔졌음을 알 수 있습니다.

to_datetime 함수의 format 파라미터에서 사용하는 대표적인 포맷을 다음과 같습니다.

datetime64 타입으로 변환했을 시 매우 간단하게 연,월,일,시,분,초 등의 시간 속성을 쉽게 얻을 수 있습니다.

df['Birth_date']       = df['Birth'].dt.date         # YYYY-MM-DD(문자)
df['Birth_year']       = df['Birth'].dt.year         # 연(4자리숫자)
df['Birth_month']      = df['Birth'].dt.month        # 월(숫자)
df['Birth_month_name'] = df['Birth'].dt.month_name() # 월(문자)

df['Birth_day']        = df['Birth'].dt.day          # 일(숫자)
df['Birth_time']       = df['Birth'].dt.time         # HH:MM:SS(문자)
df['Birth_hour']       = df['Birth'].dt.hour         # 시(숫자)
df['Birth_minute']     = df['Birth'].dt.minute       # 분(숫자)
df['Birth_second']     = df['Birth'].dt.second       # 초(숫자)

이 뿐만 아니라 분기, 요일, 연기준 몇 일, 몇 번째 주인지도 알 수 있습니다.

df['Birth_quarter']       = df['Birth'].dt.quarter       # 분기(숫자)
df['Birth_weekday']       = df['Birth'].dt.weekday       # 요일숫자(0-월, 1-화) (=dayofweek)
df['Birth_weekofyear']    = df['Birth'].dt.weekofyear    # 연 기준 몇주째(숫자) (=week)
df['Birth_dayofyear']     = df['Birth'].dt.dayofyear     # 연 기준 몇일째(숫자)
df['Birth_days_in_month'] = df['Birth'].dt.days_in_month # 월 일수(숫자) (=daysinmonth)

 

From datetime to string

datetime64 타입의 .dt 속성에서 strftime을 통해 datetime64에서 string으로 타입을 다시 바꿀 수 있습니다. strftime 함수 안에 파라미터를 통해 스트링의 포맷을 지정할 수 있습니다.

df['Birth'] = df['Birth'].dt.strftime('%d/%m/%Y')

문자열로 변환 시 위의 포맷처럼 다양한 조건으로 변환할 수 있는데 두자리 연도는 %y, 일요일은 '0'부터 시작하는 주 단위의 요일은 %w, 해당 주의 숫자 (week number of the year) 는 %U (일요일이 주의 첫 번째)나 %W (월요일이 주의 첫 번째) 등으로 바꿀 수 있습니다.

 

From string to datetime

위의 소개한 pandas의 to_datetime 이외에도 datetime 모듈의 strptime을 이용해서 스트링 객체를 datetime 객체로 변환할 수 있습니다.

 

 

참조

반응형