Numpy/Pandas - datetime

# datetime64란?

  • 날짜와 시간을 저장하는 자료 형태
  • datetime을 보완하기 위한 라이브러리
  • numpy에서 64bit로 처리하도록 변경
  • pandas에서는 Timestamp로 사용

 

# timedelta64란?

  • 날짜/시간 연산시 각자 가지고있는 기준이 다르기 때문에(연-월-일-시-분-초) 이를 저장하기 위한 별도의 클래스
  • timedelta를 보완하기 위한 라이브러리
  • numpy에서 64bit로 처리하도록 변경
  • pandas에서는 Timedelta로 사용

 

# 각각의 라이브러리에서 정의된 날짜 타입

라이브러리 날짜시간 클래스 타임델타 클래스
datetime datetime, date, time timedelta
numpy datetime64 timedelta64
pandas Timestamp Timedelta

 

# Numpy

datetime64

  • 넘파이로 텍스트로 날짜 타입으로 정의하기
  • numpy.datetime64(n) : 컴퓨터가 이해할 수 있는 날짜의 형태를 넘파이를 이용하여 변환
  • numpy.array( array, dtype='datetime64') : 배열의 타입을 지정해주면 날짜/시간 타입을 같은 형태로 저장
  • '연-월-일' 의 순서대로 입력하여야 함. 그 외는 에러 출력

 

timedelta64

  • 넘파이로 날짜 계산해보기
    • 넘파이에서는 정수 데이터를 이용하여 날짜 계산이 가능
    • 타임델타를 활용하여 날짜 연산
      • numpy.timedelta64(n) : n의 값을 날짜/시간으로 변경

 

# Pandas

Timestamp

  • 판다스로 텍스트를 날짜 타입으로 정의하기
  • pandas.Timestamp(n) : 컴퓨터가 이해할 수 있는 날짜의 형태를 판다스를 이용하여 변환 
    • '연-월-일 시:분:초'의 형태로 저장
    • '연, 월, 일, 시, 분, 초'순으로 입력
    • 판다스에서 날짜 입력시 하이픈(-) / 슬래쉬(/) / 쉼표(,)로 입력
    • 입력은 두가지 형태 : '연->월->일' / '월->일->연'

 

Timedelta

  • 판다스로 날짜 계산해보기 
  • 판다스에서는 정수 데이터를 이용하여 날짜 계산이 불가
  • 타임델타 활용
    • pandas.Timedelta(n, unit=m) : n의 값을 m의 날짜/시간으로 변경
      • unit : (W:주, D:일, T:분, S:초) 주어진 기준으로 n의 값을 계산
    • pandas.to_timedelta : 동일

 

# DatetimeIndex 

  • 특정한 순간에 기록된 날짜형식의 데이터타입
  • 날짜 데이터를 다루기 위한 인덱스
  • 인덱스를 사용하기 위해서는 다음과 같은 함수를 사용하여 생성
    • pandas.to_datetime : 문자열을 자동으로 datetime의 자료형으로 변환
    • pandas.date_range : 시작일과 종료일 사이의 범위의 날짜를 datetime의 자료형으로 변환

 

to_datetime

  • 문자열의 데이터를 날짜 타입으로 정의
  • 자동으로 날짜 인덱스 부여
  • 타임스탬프와 규칙 같음
  • pandas.to_datetime(n) : 컴퓨터가 이해할 수 있는 날짜의 형태를 판다스를 이용하여 변환

 

to_timedelta

문자열의 데이터를 날짜 타입으로 정의하나, 날짜 계산에 용이하게끔 변환

타임델타와 규칙 같음

자동으로 타임델타 인덱스 부여

  • pandas.to_timedelta(n, unit) : n의 값을 unit의 부여 값에 따라 날짜로 변환
    • unit : (W:주, D:일, T:분, S:초) 주어진 기준으로 n의 값을 표기

 

 

date_range

  • 판다스로 날짜 기간을 특정 주기로 정의
  • 기간내 주기별로 인덱스를 부여할 때 사용
  • pandas.date_range('시작날짜', '끝나는날짜', freq=n) : 시작일부터 종료일까지의 날짜를 특정 주기로 출력
    • 기본 값은 하루 단위, freq 미기재시 하루 단위로 출력
    • freq : 주기 설정 ( D:일, W:주, M:월, Y:년 )

 

timedelta_range

  • 연-월-일이 아닌 날짜 계산에 용이하게 하나의 단위를 가지는 값으로 변환
  • 기간내 주기별로 인덱스를 부여할 때 사용
  • pandas.timedelta_range('시작값', '끝값') : 시작값부터 끝값까지의 날짜/시간를 특정 주기로 출력
    • 주기 설정 : D:일, W:주, M:월, Y:년 
  • 사실 이 부분은 나도 정확히 이해가 되지 않아 내가 이해한대로 예시를 올려두겠음
  • 1일부터 10일까지의 타임델타 인덱스 데이터

1일부터 10일까지, D:일

  • 10일부터 14일까지의 타임델타 인덱스 데이터

10일부터 2주까지, D:일/W:주