В предыдущей статье,Мы объяснили функцию панд для обработки времени,В этой статье мы познакомим панд временной Обработка ряд.
Как следует из названия, временной ряд(time ряд) представляет собой последовательность, состоящую из времени. Он относится к последовательности значений переменной, измеренной в хронологическом порядке в течение определенного периода времени. Например, температура в течение дня будет меняться со временем или цена. запас будет меняться со временем. Учитывая постоянные колебания времени, используемый здесь временной ряд можно рассматривать как временной. ряд。временной ряд включает в себя три сценария применения, а именно:
Обработкавременной В процессе рядов мы обычно сталкиваемся с двумя проблемами. Во-первых, как создать временную. ряд;Во-вторых, как изменить сгенерированную временную Частота ряда. Pandas Он предоставляет набор простых и удобных в использовании методов для решения вышеуказанных проблем.
В Python есть встроенный модуль datetime для получения текущего времени, и вы можете получить локальное текущее время с помощью datetime.now(). Код выглядит следующим образом:
from datetime import datetime
#Тип данных — datetime
print(datetime.now())
Pandas также предоставляет ряд методов обработки времени. Ниже мы представляем обработку времени pandas.
TimeStamp (метка времени) давременной Самый простой тип данных в ряду, он прекрасно сочетает в себе числовые значения и моменты времени. Панды использовать Следующие методы Создать временную метку:
import pandas as pd
print (pd.Timestamp('2023-03-26'))
-----------------------------
Вывод следующий:
2023-03-26 00:00:00
Аналогичным образом вы можете преобразовать целое число или представление времени с плавающей запятой в метку времени. Единицей по умолчанию являются наносекунды (единица измерения времени), пример следующий:
import pandas as pd
print(pd.Timestamp(1679818304,unit='s'))
---------------------
Вывод следующий:
2023-03-26 08:11:44
Метод date_range() можно использовать для создания непрерывного периода времени или фиксированного интервала времени. Эта функция предоставляет три параметра, а именно:
Примеры следующие:
import pandas as pd
#freq представляет временную частоту, меняющуюся каждые 30 минут.
print(pd.date_range("9:00", "15:15", freq="30min").time)
-----------------
Вывод следующий:
[datetime.time(9, 0) datetime.time(9, 30) datetime.time(10, 0)
datetime.time(10, 30) datetime.time(11, 0) datetime.time(11, 30)
datetime.time(12, 0) datetime.time(12, 30) datetime.time(13, 0)
datetime.time(13, 30) datetime.time(14, 0) datetime.time(14, 30)
datetime.time(15, 0)]
Измените временную частоту. Указанная выше временная частота основана на 30-минутных интервалах. Мы также можем изменить временной интервал на один час. Код следующий:
import pandas as pd
# Перейти на почасовую оплату
print(pd.date_range("7:10", "11:45", freq="H").time)
----------------------
Вывод следующий:
[datetime.time(7, 10) datetime.time(8, 10) datetime.time(9, 10)
datetime.time(10, 10) datetime.time(11, 10)]
Можно использовать to_datetime() Функция будет series или list Преобразовать в объект даты, где list Будет преобразовано в DatetimeIndex. Примеры следующие:
import pandas as pd
print(pd.to_datetime(pd.Series(['Mar 23, 2023','2023-03-26', None])))
-----------------------------
Вывод следующий:
0 2023-03-23
1 2023-03-26
2 NaT
dtype: datetime64[ns]
Примечание. NaT не представляет время, он эквивалентен NaN.
Еще один пример
import pandas as pd
#Передаем список и генерируем Datetimeindex
print(pd.to_datetime(['Mar 20, 2023','2023-03-31', None]))
------------------------
Вывод следующий:
DatetimeIndex(['2023-03-20', '2023-03-31', 'NaT'], dtype='datetime64[ns]', freq=None)
Периоды времени представляют собой интервал времени, период времени, который определен в классе Pandas Periods. Метод, предоставляемый этим классом, можно использовать для преобразования частоты в период. Например, метод Periods() может преобразовать частоту «М» (месяц) в Period (период времени).
В следующем примере используется asfreq() и start параметры, распечатать "01" , если использовать end параметры, распечатать "31"。Примеры следующие:
import pandas as pd
x = pd.Period('2023', freq='M')
#startparameter
print(x.asfreq('D', 'start'))
#конечныйпараметр
print(x.asfreq('D', 'end'))
------------------------
Вывод следующий:
2023-01-01
2023-01-31
Для обычно используемой временной рядчастоты, Панды Для него указаны некоторые псевдонимы строк, которые мы называем «смещением». Как показано в следующей таблице:
Псевдоним | описывать | Псевдоним | описывать |
---|---|---|---|
B | Частота рабочего дня | BQS | Частота начала рабочего квартала |
D | частота календарных дней | A | Частота на конец года |
W | еженедельная частота | BA | Периодичность окончания рабочего года |
M | Частота в конце месяца | BAS | Частота начала рабочего года |
SM | частота окончания полумесяца | BH | Частота рабочих часов |
BM | Частота окончания рабочего месяца | H | Почасовая частота |
MS | ежемесячная частота запуска | T,min | частота в минуту |
SMS | Половинаежемесячная частота запуска | S | частота в секунду |
BMS | Работаежемесячная частота запуска | L,ms | миллисекунда |
Q | Частота конца квартала | U,us | тонкий |
BQ | Частота окончания рабочего квартала | N | наносекунда |
QS | частота начала четверти |
Вычисления периода относятся к арифметическим операциям над периодами времени, и все операции будут выполняться на «частотной» основе.
import pandas as pd
#S означает секунды
x = pd.Period('2023', freq='S')
print(x)
----------------------------
Вывод следующий:
2023-01-01 00:00:00
Пример выполнения расчета:
import pandas as pd
x = pd.Period('2023', freq='S')
#Добавляем 2 секунды ко времени
print(x+2)
---------------
Вывод следующий:
2023-01-01 00:00:02
Полный пример:
import pandas as pd
#Define period period, по умолчанию freq="Y" год
p1=pd.Period('2023')
p2=pd.Period('2022')
#использоватьf''Форматированный вывод
print(f'p1={p1}год')
print(f'p2={p2}год')
print(f'p1иp2 интервал {p1-p2} лет')
#f'' представляет вывод в формате строки.
print(f'Пять лет назад было {p1-5} лет')
--------------------
Вывод следующий:
р1=2023
р2=2022
p1иp2интервал<YearEnd: month=12>Год
Пять лет назад это был 2018 год.
использовать period_range() Способы создания период времениобъем。Примеры следующие:
import pandas as pd
#Y означает год
p = pd.period_range('2020','2023', freq='Y')
print(p)
-----------------------------
Вывод следующий:
PeriodIndex(['2020', '2021', '2022', '2023'], dtype='period[A-DEC]')
Pandas предоставляет функцию date_range() для создания последовательности дат. Частота этой функции по умолчанию — «D», что означает «день». Последовательность дат содержит только год, месяц и день, но не включает часы, минуты и секунды.
Примеры следующие:
import pandas as pd
print(pd.date_range('03/26/2023', periods=10))
-------------------
Вывод следующий:
DatetimeIndex(['2023-03-26', '2023-03-27', '2023-03-28', '2023-03-29',
'2023-03-30', '2023-03-31', '2023-04-01', '2023-04-02',
'2023-04-03', '2023-04-04'],
dtype='datetime64[ns]', freq='D')
Примечание:использовать date_range() Приходить Диапазон дат созданиячас,Эта функция содержит дату окончания,С математической точки зрения интервал замкнут слева и закрыт справа.,т.е. содержит начальное значение,Также содержит конечное значение.
использовать Следующие методы могут изменить частоту,Например, нажмите «день», чтобы нажать «месяц».,Примеры следующие:
import pandas as pd
print(pd.date_range('01/31/2023', periods=5,freq='M'))
-------------------------
Вывод следующий:
DatetimeIndex(['2023-01-31', '2023-02-28', '2023-03-31', '2023-04-30',
'2023-05-31'],
dtype='datetime64[ns]', freq='M')
bdate_range() представляет диапазон дат для создания рабочих дней, который отличается от date_range() тем, что не включает субботу и воскресенье.
import pandas as pd
print(pd.bdate_range('03/26/2023', periods=10))
----------------------
Вывод следующий:
DatetimeIndex(['2023-03-27', '2023-03-28', '2023-03-29', '2023-03-30',
'2023-03-31', '2023-04-03', '2023-04-04', '2023-04-05',
'2023-04-06', '2023-04-07'],
dtype='datetime64[ns]', freq='B')
Частота по умолчанию для date_range() — календарные дни, а частота по умолчанию для bdate_range() — будние дни.
Примечание. Традиционные китайские праздники по умолчанию не являются днями отдыха, поэтому выходные данные по-прежнему определяют, является ли этот день рабочим, в зависимости от того, суббота это или воскресенье.
В этой статье в основном представлены пандывременной ряд связанного контента,pandas очень богат на обработку времени,Функция также очень мощная,Это очень помогает в нашей работе. Обработку разницы во времени панд мы представим позже.