개발/파이썬

파이썬. date array를 처리하는 datetime64

웅'jk 2022. 11. 30. 17:37
from datetime import datetime
someday=datetime(2022,5,11,15,30) 
someday.isoformat() #보기편하게 출력
someday.weekday() # 요일출력
someday.strftime('%Y년 %m월 %d일') #형식

date_str = '2022-05-21'
from dateutil.parser import parse
parse(date_str) # 문자열변환

지금까지 datetime을 위와 같은 식으로 이용을 했습니다.

다만 이제 parse에서 문자열을 한개만 입력을 받았는데 이를 list로 여러개의 항목을 바꾸려고 

값을 넣어보면 에러가 뜹니다.

date_list = ['2022-05-11','2022-06-10','2022-07-03']
parse(date_list)

이러한 list 형식을 받아오는 방법으로

numpy 에 datetime64 를 이용합니다.

 

import numpy as np
date_list = ['2022-01-04', '2022-01-07', '2022-05-11', '2022-06-10', '2022-07-03']
someday= np.array(date_list,dtype=np.datetime64)
# numpy로 date타입 만들기

#실행결과 :
# array(['2022-01-04', '2022-01-07', '2022-05-11', '2022-06-10',
#      '2022-07-03'], dtype='datetime64[D]')

위와같은식으로 date array를 만들 수 있습니다.

 

pandas 에서는 to_datetime 으로 지원을 한다.

import pandas as pd

date_list = ['2022-01-04', '2022-01-07', '2022-05-11', '2022-06-10', '2022-07-03']
pd.to_datetime(date_list)

#실행결과 :
#DatetimeIndex(['2022-01-04', '2022-01-07', '2022-05-11', '2022-06-10',
#              '2022-07-03'],
#              dtype='datetime64[ns]', freq=None)
pd.DatetimeIndex(date_list)
# 위와 같은 형식으로도 가능합니다.

앞서서 str 함수를 쓰기위해 .str 을 사용했듯이 datetime을 이용하기 위해서는 

.dt로 사용합니다.

다음과 같은 df 가 있습니다. 날짜정보를 토대로 요일을 만들어봅시다.

pd.to_datetime(df['날짜']).dt.strftime('%a')
#to_datetime(df['날짜']) 로 날짜 정보를 datetime array로 만듭니다.
# .dt datetime 함수를 사용하기 위해서 붙힙니다.
# strftime('%a') datetime의 함수 strftime으로 요일을 소문자로 출력합니다.

 

날짜들을 범위를 지정하여 채워주는 Pandas.date_range() 함수가 있습니다.

pd.date_range('2022-11-30 09:00','2023-02-05 11:00',freq='H')
#실행결과
#DatetimeIndex(['2022-11-30 09:00:00', '2022-11-30 10:00:00',
#               '2022-11-30 11:00:00', '2022-11-30 12:00:00',
#               '2022-11-30 13:00:00', '2022-11-30 14:00:00',
#               '2022-11-30 15:00:00', '2022-11-30 16:00:00',
#               '2022-11-30 17:00:00', '2022-11-30 18:00:00',
#               ...
#               '2023-02-05 02:00:00', '2023-02-05 03:00:00',
#               '2023-02-05 04:00:00', '2023-02-05 05:00:00',
#               '2023-02-05 06:00:00', '2023-02-05 07:00:00',
#               '2023-02-05 08:00:00', '2023-02-05 09:00:00',
#               '2023-02-05 10:00:00', '2023-02-05 11:00:00'],
#              dtype='datetime64[ns]', length=1611, freq='H')

freq의 값으로는 다음과 같습니다.