지난 포스팅에서는 native Python datetime 모듈의 4가지 데이터 유형으로 date, time, datetime, timedelta 에 대해서 소개(https://rfriend.tistory.com/496)하였습니다.
이번 포스팅에서는 Python datetime과 거의 유사한 기능과 활용법을 가지는 pandas의 Timestamp 클래스로 날짜-시간 데이터 입력, 변환, 정보추출하는 방법에 대해서 소개하겠습니다. 매우 기본적인 내용들이고 쉽습니다.
(1) pandas Timestamp 생성하기 : pd.Timestamp() |
pandas.Timestamp() 클래스를 사용해서 (a) 위치(position), (b) 키워드(keyword) 의 두 가지 방식으로 pandas Timestamp 객체를 생성할 수 있습니다.
(a) 위치(position)의 경우 순서대로 (year, month, day, hour, minute, second) 를 의미합니다.
(b) 키워드(keyword) 방식의 경우 year, month, day, hour, minute, second 각 키워드별로 순서에 무관하게 값을 입력해주면 됩니다.
단, position과 keyword 방식을 하나의 Timestamp 객체에 병행해서 사용할 수는 없습니다.
import pandas as pd # (a) position: (year, month, day, hour, minute, second) pd_ts = pd.Timestamp(2019, 12, 22, 13, 30, 59) pd_ts
# (b) keyword pd.Timestamp(year=2019, month=12, day=22, hour=13, minute=30, second=59)
# keyword : with different position pd.Timestamp(day=22, month=12, year=2019, hour=13, minute=30, second=59) [OUT] Timestamp('2019-12-22 13:30:59') |
(2) pandas Timestamp Attributes 로 날짜, 시간 정보 확인하기 |
# pandas Timestamp's Attributes stamp = pd.Timestamp(2019, 12, 22, 13, 30, 59) print('---------------------------') print('pandas Timestamp Attributes') print('---------------------------') print('pandas Timestamp:', stamp) print('year:', stamp.year) print('month:', stamp.month) print('day:', stamp.day) print('hour:', stamp.hour) print('minute:', stamp.minute) print('second:', stamp.second) print('microsecond:', stamp.microsecond) print('day of week:', stamp.dayofweek) # [Monday 0 ~ Sunday 6] print('day of year:', stamp.dayofyear) print('days in month:', stamp.days_in_month) # or daysinmonth print('quarter:', stamp.quarter) print('week number of the year:', stamp.week) # or weekofyear
--------------------------- pandas Timestamp Attributes --------------------------- pandas Timestamp: 2019-12-22 13:30:59 year: 2019 month: 12 day: 22 hour: 13 minute: 30 second: 59 microsecond: 0 day of week: 6 day of year: 356 days in month: 31 quarter: 4 week number of the year: 51 |
(3) pandas Timestamp Methods 로 날짜, 시간 정보 확인하기 |
- date() 메소드: 년-월-일(year-month-day) 객체 반환
- time() 메소드: 시간-분-초(hour-minute-second) 객체 반환
# pandas Timestamp pd_ts = pd.Timestamp(2019, 12, 22, 13, 30, 59) pd_ts
# pandas Timestamp date(), time() method print('date:', pd_ts.date()) print('time', pd_ts.time())
|
- combine() 메소드: 날짜(date)와 시간(time) 객체를 합쳐서 날짜-시간(date-time) 객체 만들기
# combine() method pd.Timestamp.combine(pd_ts.date(), pd_ts.time())
|
- month_name() 메소드: 월의 영문 이름 반환
pd_ts.month_name() [Out] 'December'
|
- timestamp() 메소드: float형 POSIX timestamp 반환
pd_ts.timestamp() [Out] 1577021459.0
|
- now(), today() 메소드: 현재 날짜와 시간 반환 (current date and time)
(cf. datetime.now() 와 동일)
# current date and time pd.Timestamp.now() [Out] Timestamp('2019-12-22 15:55:52.916704') pd.Timestamp.today() [Out] Timestamp('2019-12-22 15:55:52.924013') # equvalent to datetime.now() import datetime as dt dt.datetime.now() [Out] datetime.datetime(2019, 12, 22, 15, 55, 52, 933711) |
(4) pandas Timestamp를 문자열(string)로 변환, 문자열을 Timestamp로 변환 (Converting between pandas Timestamp and Strings) |
(4-1) strftime(format 설정): pandas Timestamp를 문자열(string)로 변환
# convert pandas Timestamp to string pd_ts = pd.Timestamp(2019, 12, 22, 13, 30, 59) pd_ts.strftime('%Y-%m-%d %H:%M:%S') # 4-digit year, 24-hour format
pd_ts.strftime('%y-%m-%d %I:%M:%S') # 2-digit year, 12-hour format [Out] '19-12-22 01:30:59' |
(4-2) pd.to_datetime(문자열): 문자열을 pandas Timestamp로 변환
# convert string to pandas Timestamp pd.to_datetime('2019-12-22 01:30:59') [Out] Timestamp('2019-12-22 01:30:59')
|
여러 개의 날짜(-시간) 포맷의 문자열로 이루어지 리스트를 가지고 pd.to_datetime() 을 이용하여 pandas DatetimeIndex 를 만들 수 있습니다. 이렇게 만든 DatetimeIndex를 pandas Series, DataFrame의 index 로 사용할 수 있습니다.
# convert string list to pandas datetimeIndex ts_list = ['2019-12-22', '2019-12-23', '2019-12-24', '2019-12-25'] ts_idx = pd.to_datetime(ts_list) ts_idx
val = [1, 2, 3, 4] ts_series = pd.Series(val, index=ts_idx) ts_series [Out] 2019-12-22 1
2019-12-23 2
2019-12-24 3
2019-12-25 4
dtype: int64 ts_df = pd.DataFrame(val, columns=['val'], index=ts_idx) ts_df [Out]
|
(5) pandas Timestamp를 Python standard datetime 으로 변환하기 |
pandas의 to_pydatetime() 메소드를 사용하여 pandas Timestamp 객체를 native Python datetime 모듈의 날짜-시간 객체로 변환할 수 있습니다.
pd_ts = pd.Timestamp(2019, 12, 22, 13, 30, 59) pd_ts
# convert pandas Timestamp to native Python datatime pd_ts.to_pydatetime() [Out] datetime.datetime(2019, 12, 22, 13, 30, 59) |
많은 도움이 되었기를 바랍니다.
이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾹 눌러주세요.