파이썬의 datetime 모듈, numpy의 datetime64 / timedelta64 및 팬더의 Timestamp / Timedelta 객체 사이의 관계를 더 잘 설명하기 위해 더 통합 된 노력이있을 수 있다고 생각합니다.
파이썬의 날짜 / 시간 표준 라이브러리
날짜 시간 표준 라이브러리에는 네 가지 주요 객체가 있습니다
- 시간-시간, 분, 초 및 마이크로 초로 측정 된 시간 만
- 날짜-년, 월 및 일만
- datetime-시간 및 날짜의 모든 구성 요소
- timedelta-최대 일 단위의 시간
이 네 가지 객체를 만듭니다
>>> import datetime
>>> datetime.time(hour=4, minute=3, second=10, microsecond=7199)
datetime.time(4, 3, 10, 7199)
>>> datetime.date(year=2017, month=10, day=24)
datetime.date(2017, 10, 24)
>>> datetime.datetime(year=2017, month=10, day=24, hour=4, minute=3, second=10, microsecond=7199)
datetime.datetime(2017, 10, 24, 4, 3, 10, 7199)
>>> datetime.timedelta(days=3, minutes = 55)
datetime.timedelta(3, 3300)
>>> # add timedelta to datetime
>>> datetime.timedelta(days=3, minutes = 55) + \
datetime.datetime(year=2017, month=10, day=24, hour=4, minute=3, second=10, microsecond=7199)
datetime.datetime(2017, 10, 27, 4, 58, 10, 7199)
NumPy의 datetime64 및 timedelta64 객체
NumPy에는 별도의 날짜 및 시간 객체가 없으며 단일 시점을 나타내는 단일 datetime64 객체 만 있습니다. datetime 모듈의 datetime 객체는 마이크로 초 정밀도 (백만 분의 1 초)입니다. NumPy의 datetime64 객체를 사용하면 시간에서 아토초 (10 ^ -18)까지 정밀도를 설정할 수 있습니다. 생성자가 더 유연하고 다양한 입력을 취할 수 있습니다.
NumPy의 datetime64 및 timedelta64 객체 생성
단위 문자열을 정수로 전달하십시오. 여기에서 모든 장치를 참조하십시오 . 1970 년 1 월 1 일, 유닉스 시대 이후 많은 단위로 변환되었습니다.
>>> np.datetime64(5, 'ns')
numpy.datetime64('1970-01-01T00:00:00.000000005')
>>> np.datetime64(1508887504, 's')
numpy.datetime64('2017-10-24T23:25:04')
ISO 8601 형식 인 한 문자열을 사용할 수도 있습니다.
>>> np.datetime64('2017-10-24')
numpy.datetime64('2017-10-24')
타임 델타에는 단일 단위가 있습니다
>>> np.timedelta64(5, 'D') # 5 days
>>> np.timedelta64(10, 'h') 10 hours
두 개의 datetime64 객체를 빼서 만들 수도 있습니다
>>> np.datetime64('2017-10-24T05:30:45.67') - np.datetime64('2017-10-22T12:35:40.123')
numpy.timedelta64(147305547,'ms')
팬더 타임 스탬프 및 타임 델타가 NumPy 위에 훨씬 더 많은 기능을 구축
팬더 타임 스탬프는 날짜 시간과 매우 유사하지만 기능이 훨씬 많은 순간입니다. 당신도 그들을 만들 수 있습니다 pd.Timestamp
또는 pd.to_datetime
.
>>> pd.Timestamp(1239.1238934) #defautls to nanoseconds
Timestamp('1970-01-01 00:00:00.000001239')
>>> pd.Timestamp(1239.1238934, unit='D') # change units
Timestamp('1973-05-24 02:58:24.355200')
>>> pd.Timestamp('2017-10-24 05') # partial strings work
Timestamp('2017-10-24 05:00:00')
pd.to_datetime
매우 유사하게 작동하며 (몇 가지 옵션이 더 있음) 문자열 목록을 타임 스탬프로 변환 할 수 있습니다.
>>> pd.to_datetime('2017-10-24 05')
Timestamp('2017-10-24 05:00:00')
>>> pd.to_datetime(['2017-1-1', '2017-1-2'])
DatetimeIndex(['2017-01-01', '2017-01-02'], dtype='datetime64[ns]', freq=None)
Python datetime을 datetime64 및 Timestamp로 변환
>>> dt = datetime.datetime(year=2017, month=10, day=24, hour=4,
minute=3, second=10, microsecond=7199)
>>> np.datetime64(dt)
numpy.datetime64('2017-10-24T04:03:10.007199')
>>> pd.Timestamp(dt) # or pd.to_datetime(dt)
Timestamp('2017-10-24 04:03:10.007199')
numpy datetime64를 datetime 및 Timestamp로 변환
>>> dt64 = np.datetime64('2017-10-24 05:34:20.123456')
>>> unix_epoch = np.datetime64(0, 's')
>>> one_second = np.timedelta64(1, 's')
>>> seconds_since_epoch = (dt64 - unix_epoch) / one_second
>>> seconds_since_epoch
1508823260.123456
>>> datetime.datetime.utcfromtimestamp(seconds_since_epoch)
>>> datetime.datetime(2017, 10, 24, 5, 34, 20, 123456)
타임 스탬프로 변환
>>> pd.Timestamp(dt64)
Timestamp('2017-10-24 05:34:20.123456')
타임 스탬프에서 datetime 및 datetime64로 변환
팬더 타임 스탬프가 매우 강력하기 때문에 이것은 매우 쉽습니다.
>>> ts = pd.Timestamp('2017-10-24 04:24:33.654321')
>>> ts.to_pydatetime() # Python's datetime
datetime.datetime(2017, 10, 24, 4, 24, 33, 654321)
>>> ts.to_datetime64()
numpy.datetime64('2017-10-24T04:24:33.654321000')
numpy
,pandas
버전.