11 Date_Time

날짜 자료형

  • Pandads에서는 날짜 자료형을 표현하기 위해서 파이썬의 datetime 모듈, numpy의 datetime64과 timedelta64을 사용한다.
  • 파이썬의 datetime (datetime Docs ) 모듈안에는 다음과 같은 객체 자료형이 존재한다.

    • datetime.date: 년월일을 저장하고 관련 메소드를 제공
    • datetime.time: 시분초를 저장하고 관련 메소드를 제공
    • datetime.datetime:date와 time을 동시에 저장하고 관련 메소드를 제공
    • datetime.timedelta: 두 datetime 간의 차이를 표현
  • datetime을 문자로 변환할때는 str, strftime 메소드를 반대로 문자를 strptime메소드를 사용하여 datetime 형으로 변환할 수 있다.

In [1]:
from datetime import date
from datetime import datetime
from datetime import timedelta
import numpy as np
import pandas as pd
In [2]:
# datetime.date 객체 사용
today = date.today()
print(today)
weekd = date.today().weekday()
print(weekd)
2017-10-30
0
In [3]:
# datetime.date 객체 사용
now = datetime.now()
print(now) # print를 사용하여 출력하면 datetime.datetime(2017, 9, 28, 8, 28, 51, 670911)  형태로 표현이 안됨
now
2017-10-30 14:09:51.126628
Out[3]:
datetime.datetime(2017, 10, 30, 14, 9, 51, 126628)
In [4]:
# datetime.datetime의 year, month, day 메소드
now.year, now.month, now.day
Out[4]:
(2017, 10, 30)
In [5]:
# replace 메소드를 사용하여 날짜와 시간을 변경할 수 있음
yesterday = now.replace(day=1)
yesterday
Out[5]:
datetime.datetime(2017, 10, 1, 14, 9, 51, 126628)
In [6]:
# datetime객체를 사용하여 timedelta객체 생성
detla = datetime(2002,1,1) - datetime(2001,1,1)
detla
Out[6]:
datetime.timedelta(365)
In [7]:
# timedelta객체가 초 단위로 생성
detla = datetime(2002,1,1) - datetime(2001,1,1,23, 59)
detla
Out[7]:
datetime.timedelta(364, 60)
In [8]:
#timedelta객체를 사용하여 datetime 객체 생성
now + timedelta(days=-10)
Out[8]:
datetime.datetime(2017, 10, 20, 14, 9, 51, 126628)
In [9]:
# datetime을 문자로 변환
stamp = datetime(2002,1,1)
str(stamp)
Out[9]:
'2002-01-01 00:00:00'
In [10]:
# strftime 을 사용하여 문자로 변환 
stamp.strftime('%Y-%m-%d')
Out[10]:
'2002-01-01'
In [11]:
#strptime 메소드를 사용하여 datetime형으로 변환
strDate = '2002-01-01'
datetime.strptime(strDate, '%Y-%m-%d')
Out[11]:
datetime.datetime(2002, 1, 1, 0, 0)
In [12]:
# datetime형 생성
data  = np.arange(12).reshape((-1, 4))
data = {'Arizona':[datetime(2002,10,1), datetime(2003,10,2) ,datetime(2004,10,3) ]}
index = [2003, 2004, 2005 ]
df = pd.DataFrame(data = data, index = index)
print(df)
        Arizona
2003 2002-10-01
2004 2003-10-02
2005 2004-10-03
In [13]:
#  datetime 자료형 생성 
from datetime import timedelta
df['Bosotn'] = df['Arizona'].map(lambda x:x + timedelta(2))
df['Bosotn'] = df['Arizona'].map(lambda x:x + timedelta(2))
df['Chicago'] = df['Arizona'].map(lambda x:x + timedelta(4))
# timedelta 자료형 생성
df['Detroit'] = df['Arizona'] -  df['Chicago']
# titmedelta를 int형으로 변환
df['Det_int'] = (df['Arizona'] -  df['Chicago']).dt.days.astype(int)
df
Out[13]:
ArizonaBosotnChicagoDetroitDet_int
20032002-10-012002-10-032002-10-05-4 days-4
20042003-10-022003-10-042003-10-06-4 days-4
20052004-10-032004-10-052004-10-07-4 days-4
In [14]:
# DataFrame에서는 numpy 자료형인 datetime64와 timedelta64로 생성
df.dtypes
Out[14]:
Arizona     datetime64[ns]
Bosotn      datetime64[ns]
Chicago     datetime64[ns]
Detroit    timedelta64[ns]
Det_int              int64
dtype: object


© 2017. All rights reserved.

Powered by ZooFighter v0.12