Предварительный заказ временных рядов Pandas datetime

pandas

«Это 26-й день моего участия в ноябрьском испытании обновлений. Подробную информацию об этом событии см.:Вызов последнего обновления 2021 г."

Прежде чем изучать временные ряды, нам нужно понять основы использования модуля datetime, который не включен в библиотеку pandas.

Но чтобы лучше изучить временные ряды в пандах, мы можем сначала изучить базовое использование даты и времени, чтобы заложить прочную основу, В основном мы осваиваем следующие методы для даты и времени:datetime.date(), datetime.datetime(), datetime.timedelta()

datetime.date

мы можем использоватьdatetime.date.todayМетод возвращает текущее время, тип данных которогоdatetime.date

import datetime  
today = datetime.date.today()
print(today,type(today))
>>>
2018-10-28 <class 'datetime.date'>

В то же время мы можем использоватьdatetime.date(年,月,日)способ вывести тип datetime даты, которую мы хотим.

import datetime
t = datetime.date(2016,6,1)
print(t)
# (年,月,日) → 直接得到当时日期
>>>
2016-06-01
datetime.datetime

Мы используемdatetime.datetime.nowМетод возвращает текущее время, тип данных которогоdatetime.datetime

import datetime
now = datetime.datetime.now()
print(now,type(now))
>>>
2018-10-28 17:34:07.467642 <class 'datetime.datetime'>

Точно так же мы можем использоватьdatetime.datetime(年,月,日,时,分,秒)выводим желаемое в видеdatetime.datetimeтип данных.

t1 = datetime.datetime(2016,6,1)
t2 = datetime.datetime(2014,1,1,12,44,33)
print(t1,t2)
>>>
2016-06-01 00:00:00 2014-01-01 12:44:33
datetime.timedelta

datetime.timedeltaПредставленные данные представляют собой тип данных разницы во времени. Разница во времени в основном используется для сложения и вычитания времени и эквивалентна идентифицируемой «разнице во времени».

# datetime.timedelta:时间差

today = datetime.datetime.today()  # datetime.datetime也有today()方法
yestoday = today - datetime.timedelta(1)  #
print(today)
print(yestoday)
print(today - datetime.timedelta(7))
>>>
2018-11-04 14:48:28.967149
2018-11-03 14:48:28.967149
2018-10-28 14:48:28.967149

Метод разбора даты: parser.parse

В дополнение к вышеперечисленным методам преобразования нам также нужны другие методы для разбора строк в форматы времени.

Вы можете использовать метод parse для преобразования строки вdatetime.datetimeтип данных.

from dateutil.parser import parse
date = '12-21-2017'
t = parse(date)
print(t,type(t))
>>>
2017-12-21 00:00:00 <class 'datetime.datetime'>

Точно так же мы можем преобразовать строки в других форматах вdatetime.datetime, но не может анализировать китайский

print(parse('2000-1-1'),'\n',
     parse('5/1/2014'),'\n',
     parse('5/1/2014', dayfirst = True),'\n',  
     # 国际通用格式中,日在月之前,可以通过dayfirst来设置
     parse('22/1/2014'),'\n',
     parse('Jan 31, 1997 10:45 PM'))
>>>
2000-01-01 00:00:00
 2014-05-01 00:00:00
 2014-01-05 00:00:00
 2014-01-22 00:00:00
 1997-01-31 22:45:00

Данные момента Pandas: отметка времени

  • Данные времени представляют момент времени и являются типом данных pandas.
  • — это самый простой тип данных временных рядов, который связывает значения с моментами времени.

Временная метка в основном такая же, как и указанная выше дата и время, за исключением того, что один — это модуль pandas, а другой — модуль даты и времени.

pandas.Timestape

pandas.Timestape может напрямую генерировать данные момента pandas

import numpy as np
import pandas as pd
date1 = datetime.datetime(2016,12,1,12,45,30)  # 创建一个datetime.datetime
date2 = '2017-12-21'  # 创建一个字符串
t1 = pd.Timestamp(date1)
t2 = pd.Timestamp(date2)
print(t1,type(t1))
print(t2,type(t2))
>>>
2016-12-01 12:45:30 <class 'pandas._libs.tslibs.timestamps.Timestamp'>
2017-12-21 00:00:00 <class 'pandas._libs.tslibs.timestamps.Timestamp'>
pandas.to_datetime

pandas.to_datetime может преобразовывать однократные данные времени в данные момента pandas, тип данных — Timestamp, и если это множественные данные времени, они будут преобразованы в pandas DatetimeIndex.

Один экземпляр данных времени:

from datetime import datetime

date1 = datetime(2016,12,1,12,45,30)
date2 = '2017-12-21'
t1 = pd.to_datetime(date1)
t2 = pd.to_datetime(date2)
print(t1,type(t1))
print(t2,type(t2))
>>>
2016-12-01 12:45:30 <class 'pandas._libs.tslibs.timestamps.Timestamp'>
2017-12-21 00:00:00 <class 'pandas._libs.tslibs.timestamps.Timestamp'>

Несколько экземпляров данных времени:

lst_date = [ '2017-12-21', '2017-12-22', '2017-12-23']
t3 = pd.to_datetime(lst_date)
print(t3,type(t3))
>>>
DatetimeIndex(['2017-12-21', '2017-12-22', '2017-12-23'], dtype='datetime64[ns]', freq=None) <class 'pandas.core.indexes.datetimes.DatetimeIndex'>

Когда в нескольких временных рядах есть другие форматы данных, мы можем использовать параметр ошибки для возврата,errors = 'ignore': вернуть исходный ввод, когда он не может быть проанализирован, вот прямое создание общего массива.

date3 = ['2017-2-1','2017-2-2','2017-2-3','hello world!','2017-2-5','2017-2-6']
t3 = pd.to_datetime(date3, errors = 'ignore')
print(t3,type(t3))
>>>
['2017-2-1' '2017-2-2' '2017-2-3' 'hello world!' '2017-2-5' '2017-2-6'] <class 'numpy.ndarray'>

когдаerrors = 'coerce'Когда данные разных типов будут возвращать NaT, результатом будет то, что DatetimeIndex

date3 = ['2017-2-1','2017-2-2','2017-2-3','hello world!','2017-2-5','2017-2-6']
t4 = pd.to_datetime(date3, errors = 'coerce')
print(t4,type(t4))
>>>
DatetimeIndex(['2017-02-01', '2017-02-02', '2017-02-03', 'NaT', '2017-02-05',
               '2017-02-06'],
              dtype='datetime64[ns]', freq=None) <class 'pandas.core.indexes.datetimes.DatetimeIndex'>