지난 포스팅에서는 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

[OUT] Timestamp('2019-12-22 13:30:59')

 

# (b) keyword

pd.Timestamp(year=2019, month=12, day=22, hour=13, minute=30, second=59)

[OUT] Timestamp('2019-12-22 13:30: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

[Out] Timestamp('2019-12-22 13:30:59')


# pandas Timestamp date(), time() method

print('date:', pd_ts.date())

print('time', pd_ts.time())

[Out] date: 2019-12-22 [Out] time 13:30:59




- combine() 메소드: 날짜(date)와 시간(time) 객체를 합쳐서 날짜-시간(date-time) 객체 만들기



# combine() method

pd.Timestamp.combine(pd_ts.date(), pd_ts.time())

[Out] Timestamp('2019-12-22 13:30:59')

 



- month_name() 메소드: 월의 영문 이름 반환



pd_ts.month_name()

[Out] 'December'

 



- timestamp() 메소드: float형 POSIX timestamp 반환



pd_ts.timestamp()

[Out1577021459.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

[Out] '2019-12-22 13:30:59'

 

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

[Out] DatetimeIndex(['2019-12-22', '2019-12-23', '2019-12-24', '2019-12-25'], dtype='datetime64[ns]', freq=None)


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]
val
2019-12-221
2019-12-232
2019-12-243
2019-12-254





  (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

[Out] Timestamp('2019-12-22 13:30:59')

 

# convert pandas Timestamp to native Python datatime

pd_ts.to_pydatetime()

[Out] datetime.datetime(2019, 12, 22, 13, 30, 59)




많은 도움이 되었기를 바랍니다. 

이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾹 눌러주세요. 


728x90
반응형
Posted by Rfriend
,