11 Date_Time
| 7 Minute Read on Pandas
날짜 자료형¶
- 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)
In [3]:
# datetime.date 객체 사용
now = datetime.now()
print(now) # print를 사용하여 출력하면 datetime.datetime(2017, 9, 28, 8, 28, 51, 670911) 형태로 표현이 안됨
now
Out[3]:
In [4]:
# datetime.datetime의 year, month, day 메소드
now.year, now.month, now.day
Out[4]:
In [5]:
# replace 메소드를 사용하여 날짜와 시간을 변경할 수 있음
yesterday = now.replace(day=1)
yesterday
Out[5]:
In [6]:
# datetime객체를 사용하여 timedelta객체 생성
detla = datetime(2002,1,1) - datetime(2001,1,1)
detla
Out[6]:
In [7]:
# timedelta객체가 초 단위로 생성
detla = datetime(2002,1,1) - datetime(2001,1,1,23, 59)
detla
Out[7]:
In [8]:
#timedelta객체를 사용하여 datetime 객체 생성
now + timedelta(days=-10)
Out[8]:
In [9]:
# datetime을 문자로 변환
stamp = datetime(2002,1,1)
str(stamp)
Out[9]:
In [10]:
# strftime 을 사용하여 문자로 변환
stamp.strftime('%Y-%m-%d')
Out[10]:
In [11]:
#strptime 메소드를 사용하여 datetime형으로 변환
strDate = '2002-01-01'
datetime.strptime(strDate, '%Y-%m-%d')
Out[11]:
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)
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]:
In [14]:
# DataFrame에서는 numpy 자료형인 datetime64와 timedelta64로 생성
df.dtypes
Out[14]: