컴공생의 다이어리

[파이썬, Python] 넘파이(Numpy)에서 날짜와 시간 - datetime64, np.array(), np.arange() 본문

Development/Python & Django

[파이썬, Python] 넘파이(Numpy)에서 날짜와 시간 - datetime64, np.array(), np.arange()

컴공 K 2021. 7. 21. 00:01

넘파이(Numpy)에서 날짜와 시간

넘파이에서 날짜와 시간은 datetime64 객체로 표현한다. 기존 파이썬의 datetime.datetime과 넘파이의 datetime64의 차이점은 시간 단위이다. datetime.datetime은 시간을 마이크로초(10-6)단위까지 관리하며, 넘파이의 datetime64는 아토초(10-18)단위까지 관리한다.

 

 

날짜와 시간 생성

넘파이로 날짜를 생성하는 방법에 대해 알아보자.

 

방법1) 아래와 같이 문자열 형식으로 전달해서 생성하는 방법

import numpy as np
np.datetime64('2021-12-21')

* 문자열의 형식은 위와 같이 꼭 써줘야 한다. np.datetime64('2021 12 21') 혹은 np.datetime64('2021.12.21') 등 이런 식의 형식에 맞지 않는 문자열을 넣는다면 에러가 발생한다.

 

방법2) 아래와 같이 유닉스 시간을 이용하는 방법

np.datetime64함수의 첫번째 인자로 수치 데이터를, 두번째 인자로는 단위를 넣어주면 된다.

import numpy as np
np.datetime64(1000,'ns')		#나노초

np.datetime64(10000,'D')		#일

np.datetime64(1000000000,'s')	#초

 

방법3) array()함수를 사용하는 방법

np.array()함수에 첫번째 인자로 str타입의 날짜 리스트를 넣고, 두번째 인자로 dtype(데이터 타입)을 'datetime64'로 설정하면 첫번째 인자로 넣은 리스트의 타입이 날짜로 변경된다.

import numpy as np
np.array(['2000-05-05', '2007-01-11', '2013-08-15'], dtype='datetime64')

 

dtype에서 datetime64를 넣어줄 때, 뒤의 '[]'안에 어떤 값을 넣는지에 따라 날짜 단위를 지정할 수 있다.

np.array(['2000-05-05', '2007-01-11', '2013-08-15'], dtype='datetime64[M]')
#실행 결과 : array(['2000-05', '2007-01', '2013-08'], dtype='datetime64[M]')
np.array(['2000-05-05', '2007-01-11', '2013-08-15'], dtype='datetime64[Y]')
#실행 결과 : array(['2000', '2007', '2013'], dtype='datetime64[Y]')

 

방법4) arange()함수를 사용해 범위를 통해 날짜를 생성하는 방법

np.arange()함수에 첫번째 인자로는 시작하는 날짜, 두번째 인자로는 종료하는 날짜, 마지막 인자로 dtype을 넣어주면 주어진 범위에 맞는 날짜 배열을 생성한다. dtype의 경우 방법3에서 설명한 것처럼 '[]'안에 어떤 값을 넣는지에 따라 날짜 단위를 지정할 수 있다.

import numpy as np
np.arange('2005-05', '2006-02', dtype='datetime64[M]') # 월단위
# 결과
# array(['2005-05', '2005-06', '2005-07','2005-08', '2005-09', '2005-10', 
#                 '2005-11', '2005-12', '2006-01'], dtype='datetime64[M]')

* 두번째 인자의 종료하는 날짜는 생성되는 날짜 리스트에서 제외된다.

 

 

단위코드

  • Y : 년
  • M : 월
  • W : 주
  • D : 일
  • h : 시간
  • m : 분
  • s : 초
  • ms : 밀리초
  • us : 마이크로초
  • ns : 나노초
  • ps : 피코초
  • fs : 펨토초

 

 

 

출처 : 핀테크 Pre-인턴십 코스 - 금융 데이터 분석

728x90
Comments