Преобразование numpy.datetime64 в datetime и Timestamp
Быстрый ответ
Добро пожаловать в мир форматов datetime
, Timestamp
и datetime64
. Вот краткое руководство по преобразованию между этими тремя форматами:
- Преобразование из datetime в Timestamp: Для выполнения данной задачи используйте
pd.Timestamp(your_datetime)
. - Преобразование из Timestamp в datetime: Примените к объекту Timestamp метод
your_timestamp.to_pydatetime()
. - Преобразование из datetime в datetime64: Просто вызовите
np.datetime64(your_datetime)
. - Преобразование из datetime64 в datetime: Здесь понадобится использовать метод
astype
–your_datetime64.astype('M8[ms]').astype(datetime)
.
Продемонстрируем преобразования на примере:
import pandas as pd
import numpy as np
from datetime import datetime
your_datetime = datetime.now() # фиксируем текущее время
your_timestamp = pd.Timestamp(your_datetime) # превращаем в timestamp
your_datetime64 = np.datetime64(your_datetime) # переходим к 64-битной версии
back_to_datetime = your_datetime64.astype('M8[ms]').astype(datetime) # возвращаемся к значению datetime
Выбирайте подходящий тип datetime на основе специфики вашего проекта. Правильные преобразования гарантируют целостность данных и упрощают дальнейшую работу с ними.
Советы для быстрых преобразований
Метод Pandas
Функция pd.to_datetime
библиотеки Pandas подтверждает ее универсальность. Она способна переводить различные форматы дат в объекты Timestamp
или DatetimeIndex
:
pd.to_datetime('2023-04-12') # формат Г-М-Д
pd.to_datetime('12/04/2023', dayfirst=True) # формат Д-М-Г для европейского стандарта
pd.to_datetime(1670407200, unit='s') # временная метка UNIX
При конвертации учтите часовые пояса, задавая их параметром tz
.
Время в путешествии
Метод datetime.datetime.utcfromtimestamp
может стать выбором для конвертации из UNIX-времени в datetime, но учтите, что он не применим для дат, предшествующих индустриальной эпохе. В качестве альтернативы возьмите pd.to_datetime
с параметром unit='s'
или unit='ms'
.
Использование возможностей NumPy
В NumPy преобразование дат в UNIX-время выглядит следующим образом:
np_datetime64 = np.datetime64('2023-04-12T12:34:56')
unix_timestamp = (np_datetime64 – np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')
print(unix_timestamp) # результат преобразования
Если вы работаете с массивами дат и времени, метод tolist()
позволит преобразовать массив numpy.datetime64
в список объектов datetime
из Python.
Не забывайте обновлять pandas и numpy, чтобы поддерживать их совместимость при преобразованиях.
Визуализация
В таблице ниже представлены различные форматы представления даты и времени:
| Формат | Тип |
| ------------------ | --------------|
| Обычное представление времени | 📅 `datetime` |
| Pandas-представление | 🤖 `Timestamp` |
| NumPy-формат | 🔢 `datetime64` |
Преобразование между ними можно сравнить с переключением между различными устройствами:
# 📅 ⟷ 🤖: Преобразования datetime ↔ Timestamp
# 📅 ⟷ 🔢: Преобразования datetime ↔ datetime64
# 🤖 ⟷ 🔢: Преобразования Timestamp ↔ datetime64
Использование этих знаний поможет вам легче навигироваться по различным потребностям в обработке даты и времени.
Работа с аномалиями и подводными камнями производительности
Исключения и Особенности
Работа с датами и временем иногда скрыто осложняется високосными секундами, сдвигами при переходе на летнее/зимнее время, историческими изменениями. Предварительное исследование временных данных поможет предотвратить непредвиденные сложности.
Производительность
Для задач, требующих значительной производительности, предпочтение стоит отдать операциям NumPy. Благодаря низкоуровневой реализации и оптимизированным вычислениям, они обеспечивают большую эффективность.
Нестандартные Решения
Желаете опробовать что-то новое? Обратите внимание на такие пакеты, как Arrow
или Maya
, предлагающие удобные возможности для работы с часовыми поясами и форматированием даты и времени.
Полезные материалы
- pandas.Timestamp — документация pandas 2.2.0 — Информация о классе
Timestamp
. - Даты и временные интервалы — Руководство NumPy v1.26 — Более подробное руководство по
datetime64
. - datetime — Основные типы дат и времени — Документация Python 3.12.1 — Обзор модуля datetime.
- pandas.to_datetime — документация pandas 2.2.0 — Перевод дат и времени в формат
Timestamp
. - python – Преобразование между datetime, Timestamp и datetime64 – Stack Overflow — Обсуждение преобразования данных о дате и времени.
- Конвертер времени UNIX (Epoch Converter) — Инструменты для работы с временем в формате UNIX.
- Arrow: Улучшенные даты и времена в Python — документация Arrow 🏹 1.3.0 — Пакет для работы с датой и временем.