codestates / codestates/ds-blog
[윤형준] Datetime 모듈에 대해서 알아보자!
- Dominant language
- No language data
- Stars
- 2
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Description
안녕하세요 여러분~^^
파이썬과 데이터 공부는 잘 하고 계신가요? 오늘은 Datetime이란 모듈에 대해서 알아보겠습니다.
Datetime이란 모듈은 날짜와 시간을 표현하는데에 필요한 모듈입니다. 이 모듈안에는 여러가지 class가 존재합니다. 하지만 이번 섹션에서는 Datetime 모듈안에 Datetime이라는 class에 대해서 알아보겠습니다.
먼저 Datetime 모듈 안에서 Datetime이라는 class를 가지고 오겠습니다.
```py
from datetime import datetime
```
오늘 우선 먼저 해볼 것은, string format 으로 되있는 날짜를 datetime.datetime format으로 바꾸는 것입니다.
```py
# 06-06-2018 이란 날짜를 string으로 만들고 그것을 date_str 이라 define 합니다.
date_str = "06-06-2018"
# datetime 클래스에서 .strptime이란 method를 사용하면, string에서 datetime.datetime형식으로 변환이 됩니다.
date_dt = datetime.strptime(date_str, '%m-%d-%Y')
type(date_dt)
```
date_dt는 이제 datetime.datetime 형식이 되었습니다. datetime.datetime 형식이 된 후에는 우리가 입맛대로 연도면 연도, 월이면 월, 일이면 일, 이런식으로 원하는 부분을 잘라서 불러올 수 있습니다.
```py
date_dt.year
date_dt.month
date_dt.day
```
자! 그렇다면, datetime형식을 다시 string format으로 불러 올수 있을까요? 그때는 .strftime() 이란 method를 사용합니다.
```py
date_str = datetime.strftime(date_dt, '%m-%d-%Y')
type(date_str)
```
datetime 모듈안에 datetime이란 클래스는 오늘 날짜를 불러오는 기능도 존재합니다.
```py
print(datetime.now())
#여기서도 마찬가지로, 오늘 날짜에서 연도만 가지고 오고 싶다면?
print(datetime.now().year)
```
하지만 여기서 datetime.datime 형식의 오늘 날짜는 코드를 실행한 시간까지 포함하고 있습니다.
이것을 깔끔하게 "09-11-2020" 이런식으로 날짜를 표현하고자 한다면, 다시 string으로 변환 시켜야 합니다.
```py
date_str = datetime.now().strftime("%m-%d-%Y")
date_str
```
date_str은 현재 string format이기 때문에, 다음과 같이 다른 string과 붙여서 print()를 할 수 도 있습니다.
```py
print("Today's date is " + date_str)
```
그렇다면 이런 질문도 할 수 있을것 같아요. "datetime format으로 날짜를 만들고 싶으면 항상 string format에서 datetime.strptime() method를 이용해 만들어야 하나요?"
그렇지 않습니다. 처음부터 본인이 datetime.datetime 형식으로 만들고자 한다면, 다음과 같이 하면 됩니다.
```py
datetime(2020,9,11)
```
이번에는 Datetime안에 존재하는 다른 class!
timedelta 라는 class에 대해서 알아 보겠습니다. timedelta는 datetime.datetime 형식의 데이터에 수학적 기법을 사용할 수 있는 클래스입니다.
그럼 timedelta 클래스를 가져오겠습니다.
```py
from datetime import timedelta
```
자! 그럼 제가 여기서 timedelta로 해보고자 하는 것은, 오늘 날짜를 기점으로 정확히 1년 후까지의 날짜를 쭈~욱 뽑아서 판다스 시리즈에 한번 넣어 보겠습니다.
```py
# 먼저 빈 리스트를 설정해 주고요.
ls = []
#오늘 날짜를 불러옵니다.
today = datetime.now()
# for loop을 돌려서 날짜들을 뽑아 보겠습니다.
# 전 오늘 날짜까지 포함시키고 싶기 때문에, loop을 366번 돌리겠습니다.
for i in range(366):
#여기서 timedelta 가 하는 일은 today라는 datetime.datetime 형식에 일수를 작성자가 지정한 만큼 더하는 것입니다.
date = today + timedelta(days=i)
# datetime.datetime을 string format으로 전환 시킵니다.
date_str = date.strftime("%m-%d-%Y")
# 앞서 생성했던 리스트에 넣습니다.
ls.append(date_str)
#이 프로세스를 366번 진행시킵니다.
#리스트를 판다스 시리즈로 변환 시킵니다.
ds = pd.Series(ls)
```
자! 여기까지 datetime 모듈에 대해서 다루어 보았는데요! 여기에 나와있는 코드들은 우리가 바로 분석에 이용할 수는 없습니다. 하지만 이렇게 datetime에 대해서 이해를 하고 다룰줄 알아야 하는 이유는, 우리가 분석을 하기전에 data의 feature를 engineering 해야 하기때문입니다. 그리고 많은 데이터들이 datetime 형식 또는 string format이지만 날짜를 나타내고 있기 때문에, datetime을 이해하고 쓸줄 알아야 data의 feature를 보다 손쉽게 engineering 하고, 또 그것이 좋은 분석을 하는 것으로 이어질수 있습니다.
글을 읽어주셔서 감사합니다. ^^
그럼 다음 시간에~
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.