지방이의 Data Science Lab

[Python] Datetime Review 본문

Data Analysis/Time Series

[Python] Datetime Review

[지현] 2020. 8. 9. 12:48

#1. Datetime Review

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from datetime import datetime
 
my_year = 2017
my_month = 1
my_day = 2
my_hour = 13
my_minute = 30
my_second = 15
 
# 2017년 1월 2일
my_date = datetime(my_year,my_month,my_day)
# [1] datetime.datetime(2017, 1, 2, 0, 0)
 
 
# 2017년 1월 2일 13:30:15
my_date_time = datetime(my_year,my_month,my_day,my_hour,my_minute,my_second)
# [1] datetime.datetime(2017, 1, 2, 13, 30, 15)
  • datetime( )으로 불러오면 default는 년, 월, 일, 시, 분 까지 불러온다. 
  • 따라서, datetime(년, 월, 일)까지만 지정한 경우, 0시 0분으로 output이 나오게 된다.
1
2
3
4
my_date.day
#[1] 2
my_date_time.hour
#[1] 13

 

  • datetime object만 긁어올 수도 있다.
  • .month, .day_name (요일) 

 

 

 

#2. NumPy Datetime Arrays

1
2
3
4
5
6
7
8
9
10
11
import numpy as np
# 배열 안에 3개의 date을 넣어보자.
np.array(['2016-03-15''2017-05-24''2018-08-09'], dtype='datetime64')
# [1] array(['2016-03-15', '2017-05-24', '2018-08-09'], dtype='datetime64[D]')
 
np.array(['2016-03-15''2017-05-24''2018-08-09'], dtype='datetime64[h]')
# [1] array(['2016-03-15T00', '2017-05-24T00', '2018-08-09T00'],
#      dtype='datetime64[h]')
 
np.array(['2016-03-15''2017-05-24''2018-08-09'], dtype='datetime64[Y]')
# [1] array(['2016', '2017', '2018'], dtype='datetime64[Y]')
  • dtype='datetime64'로 설정하면 기본은 년-월-일까지만 뜨는 것.
  • Y/D/h가 존재하고 'datetime[Y]'로하면 년만 긁어와진다.
1
2
3
4
5
6
7
np.arange('2018-06-01''2018-06-23'7, dtype='datetime64[D]')
# [1] array(['2018-06-01', '2018-06-08', '2018-06-15', '2018-06-22'],
#      dtype='datetime64[D]')
 
np.arange('1968''1976', dtype='datetime64[Y]')
# [1] array(['1968', '1969', '1970', '1971', '1972', '1973', '1974', '1975'],
#      dtype='datetime64[Y]')
 

#3. Pandas Datetime Index

1
2
3
4
5
6
import pandas as pd
# 2018년 7월 8일 포함 일주일치 가져오기
idx = pd.date_range('7/8/2018', periods=7, freq='D')
#[1] DatetimeIndex(['2018-07-08', '2018-07-09', '2018-07-10', '2018-07-11',
#               '2018-07-12', '2018-07-13', '2018-07-14'],
#              dtype='datetime64[ns]', freq='D')
  • '1/1/2018', 'Jan 01, 2018', '01-Jan-2018' 어떤 형태로 코드를 돌려도 같은 아웃풋을 뱉어낸다.
1
2
3
idx = pd.to_datetime(['Jan 01, 2018','1/2/18','03-Jan-2018',None])
# [1] DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03', 'NaT'], dtype='datetime64[ns]', freq=None)
#
 
  • 즉, '1/1/2018', 'Jan 01, 2018', '01-Jan-2018' 중 어떤 형식이던 알아서 읽어낼 수 있다.
  • None이면 NaT로 변경된다.

 

1
2
3
some_dates = np.array(['2016-03-15''2017-05-24''2018-08-09'], dtype='datetime64[D]')
idx = pd.DatetimeIndex(some_dates)
#[1] DatetimeIndex(['2016-03-15', '2017-05-24', '2018-08-09'], dtype='datetime64[ns]', freq=None)
  • numpy로 만들어졌더래도 pd.DatetimeIndex( )에 넣어주면 pd로 읽어낼 수 있다.

#4. Pandas Datetime Analysis

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
data = np.random.randn(3,2)
cols = ['A','B']
df = pd.DataFrame(data,idx,cols)
 
df.index
#[1] DatetimeIndex(['2016-03-15', '2017-05-24', '2018-08-09'], dtype='datetime64[ns]', freq=None)
 
df.index.max()
#[1] Timestamp('2018-08-09 00:00:00')
 
df.index.argmax()
#[1] 2
 
df.index.min()
#[1] Timestamp('2016-03-15 00:00:00')
 
df.index.argmin()
#[1] 0
 
  • index.max( ): 가장 최신 날짜가 뭐야?
  • index.argmax( ): 가장 최신 날짜의 인덱스가 몇이야?
  • index. min( ): 가장 오래된 날짜가 뭐야?
  • index. argmin( ): 가장 오래된 날짜의 인덱스가 몇이야? 
Comments