pandas
[ pandas ] to_datetime 시간데이터 다루기 기본
우언
2022. 2. 14. 15:38
1. 생성
pd.to_datetime
from datetime import datetime
date_list = ['1997-07-22',datetime(1998,11,9),'22nd of jul, 1999']
date_series = pd.Series(date_list)
print(date_list)
print(date_series)
print(pd.to_datetime(date_list))
print(pd.to_datetime(date_series))
['1997-07-22', datetime.datetime(1998, 11, 9, 0, 0), '22nd of jul, 1999']
0 1997-07-22
1 1998-11-09 00:00:00
2 22nd of jul, 1999
dtype: object
DatetimeIndex(['1997-07-22', '1998-11-09', '1999-07-22'], dtype='datetime64[ns]', freq=None)
0 1997-07-22
1 1998-11-09
2 1999-07-22
dtype: datetime64[ns]
여러가지의 시간 형식을 자동으로 datetime형식으로 바꾸어준다 리스트의 경우 인덱스 객ㄹ체로 시리즈의 경우 각 원소가 데이트 타임인 시리즈로 리턴해준다
기본적인 포맷은 자동으로 처리해주지만
pd.to_datetime('2022:07:22:00:00')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
~\anaconda3\lib\site-packages\pandas\core\arrays\datetimes.py in objects_to_datetime64ns(data, dayfirst, yearfirst, utc, errors, require_iso8601, allow_object, allow_mixed)
2186 try:
-> 2187 values, tz_parsed = conversion.datetime_to_datetime64(data.ravel("K"))
2188 # If tzaware, these values represent unix timestamps, so we
이렇게 기본적인 포맷이 아닌경우에는 오류가 일어난다 이럴경우에는 포맷을 직접 지정해주면된다.
pd.to_datetime('22:7:22:00:00:00', format='%y:%m:%d:%H:%M:%S')
Timestamp('2022-07-22 00:00:00')
format = '문자열'로 지정해주면 성공적으로 된다.
같은 위치에 원하는 형식을 넣어주면된다.
형식 | 포맷 |
네자리 연도 (2020) | %Y |
두자리 연도 (20) | %y |
뭘 | %m |
날짜 | %d |
시 | %H |
분 | %M |
초 | %S |
pd.date_range
print(pd.date_range('2022-01-01', periods =7, freq='2H'))
print(pd.date_range('2022-01-01', periods =7, freq='2H'))
print(pd.date_range('2022-01-01', periods =7, freq='D'))
print(pd.date_range('2022-01-01', periods =7, freq='M'))
print(pd.date_range('2022-01-01', periods =7, freq='Y'))
DatetimeIndex(['2022-01-01 00:00:00', '2022-01-01 02:00:00',
'2022-01-01 04:00:00', '2022-01-01 06:00:00',
'2022-01-01 08:00:00', '2022-01-01 10:00:00',
'2022-01-01 12:00:00'],
dtype='datetime64[ns]', freq='2H')
DatetimeIndex(['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04',
'2022-01-05', '2022-01-06', '2022-01-07'],
dtype='datetime64[ns]', freq='D')
DatetimeIndex(['2022-01-31', '2022-02-28', '2022-03-31', '2022-04-30',
'2022-05-31', '2022-06-30', '2022-07-31'],
dtype='datetime64[ns]', freq='M')
DatetimeIndex(['2022-12-31', '2023-12-31', '2024-12-31', '2025-12-31',
'2026-12-31', '2027-12-31', '2028-12-31'],
dtype='datetime64[ns]', freq='A-DEC')
원하는 stride를 기준으러 생성가능하다
pd.date_range(시작날짜, 끝날짜, freq = 'stride', periods = (정수, 이거 사용시 끝날짜 x))
2. 연산
from datetime import timedelta
dt_Series = pd.to_datetime(date_series)
print(dt_Series)
print('-'*30)
print('지금시간 : ', datetime.today())
print('-'*30)
print(dt_Series - datetime.today())
print('-'*30)
print(dt_Series - datetime(1998,11,9))
print('-'*30)
print(dt_Series - datetime(1998,11,9) > timedelta(days=1))
print('-'*30)
print(dt_Series + timedelta(days=1))
0 1997-07-22
1 1998-11-09
2 1999-07-22
dtype: datetime64[ns]
------------------------------
지금시간 : 2022-02-14 15:35:32.845328
------------------------------
0 -8974 days +08:24:27.154672
1 -8499 days +08:24:27.154672
2 -8244 days +08:24:27.154672
dtype: timedelta64[ns]
------------------------------
0 -475 days
1 0 days
2 255 days
dtype: timedelta64[ns]
------------------------------
0 False
1 False
2 True
dtype: bool
------------------------------
0 1997-07-23
1 1998-11-10
2 1999-07-23
dtype: datetime64[ns]
시간끼리의 연산이 가능하다.
시간의 스칼라를 timedelta로 더할수도
한 시점과 한 시점을 비교, 연산할 수도 있다.