Функция Pandas pd.Timestamp()

Pandas 通用函数Часто используемые функции Pandas


pd.Timestamp()— это функция в библиотеке Pandas длясоздания временных меток.Она может принимать ввод даты и времени в нескольких форматах и возвращать точный объект Timestamp.

Timestamp — это тип данных в Pandas, используемый для представления одного момента времени. Это улучшенная версия datetime.datetime из стандартной библиотеки Python, обеспечивающая более богатую функциональность и лучшую производительность.

Определение слова: TimestampОзначает "timestamp", то есть представляет конкретный момент времени.


Базовый синтаксис и параметры

pd.Timestamp()— это функция верхнего уровня библиотеки Pandas, используемая для создания точных объектов временных меток.

Формат синтаксиса

pd.Timestamp(year=None, month=None, day=None, hour=None, minute=None, second=None, microsecond=None, nanosecond=None, tzinfo=None, freq=None)
pd.Timestamp(value)

Описание параметра

Параметр Type Обязательный Описание Значение по умолчанию
value String, datetime, int, float Optional Значение времени для преобразования. Отсутствует
год Integer Optional Год (4 цифры). Отсутствует
month Integer Optional Месяц (1-12). Отсутствует
day Integer Optional День (1-31). Отсутствует
hour Integer Optional Час (0-23). Отсутствует
minute Integer Optional Минута (0-59). Отсутствует
second Integer Optional Секунда (0-59). Отсутствует
microsecond Integer Optional Микросекунда (0-999999). Отсутствует
nanosecond Integer Optional Наносекунда (0-999999). Отсутствует
tz Строка или tzinfo Optional Информация о часовом поясе, например, 'UTC', 'Asia/Shanghai'. Отсутствует

Описание возвращаемого значения

  • Возвращаемое значение: Возвращает объект Timestamp, аналогичный datetime.datetime.
  • Действие: Преобразует временные данные в различных форматах в точные метки времени Pandas.

Примеры

Давайте подробно разберём на серии примеров от простого к сложному,pd.Timestamp()использование pd.Timestamp().

Пример 1: Базовое использование - Создание временных меток

Пример

import pandas as pd

# 1. Создайте временную метку с помощью строки
print("=== Создание Timestamp из строки ===")
ts1 = pd.Timestamp('2023-01-01')
print(f"pd.Timestamp('2023-01-01'): {ts1}")

ts2 = pd.Timestamp('2023-01-01 12:30:45')
print(f"pd.Timestamp('2023-01-01 12:30:45'): {ts2}")

ts3 = pd.Timestamp('2023-05-15 08:00:00.123456')
print(f"С микросекундами: {ts3}")

# 2. Создание timestamp с помощью именованных аргументов
print("\n=== Создание с именованными аргументами ===")
ts4 = pd.Timestamp(year=2023, month=6, day=15, hour=10, minute=30)
print(f"pd.Timestamp(year=2023, month=6, day=15, hour=10, minute=30): {ts4}")

# 3. Создание из объекта datetime
print("\n=== Создание из объекта datetime ===")
import datetime
dt = datetime.datetime(2023, 8, 20, 14, 45, 30)
ts5 = pd.Timestamp(dt)
print(f"Создано из datetime: {ts5}")

# 4. Просмотр атрибутов timestamp
print("\n=== Атрибуты Timestamp ===")
ts = pd.Timestamp('2023-03-15 10:30:45.123456')
print(f"Отметка времени: {ts}")
print(f"Год: {ts.year}")
print(f"Месяц: {ts.month}")
print(f"День: {ts.day}")
print(f"Час: {ts.hour}")
print(f"Минута: {ts.minute}")
print(f"Секунда: {ts.second}")
print(f"Микросекунда: {ts.microsecond}")
print(f"День недели (0=понедельник): {ts.dayofweek}")
print(f"Квартал: {ts.quarter}")

Вывод:

=== 字符串创建时间戳 ===
pd.Timestamp('2023-01-01'): 2023-01-01 00:00:00
pd.Timestamp('2023-01-01 12:30:45'): 2023-01-01 12:30:45
带微秒: 2023-05-15 08:00:00.123456

=== 关键字参数创建 ===
pd.Timestamp(year=2023, month=6, day=15, hour=10, minute=30): 2023-06-15 10:30:00

=== datetime 对象创建 ===
从 datetime 创建: 2023-08-20 14:45:30

=== 时间戳属性 ===
时间戳: 2023-03-15 10:30:45.123456
年份: 2023
月份: 3
日期: 15
小时: 10
分钟: 30
秒: 45
微秒: 123456
星期几 (0=周一): 2
季度: 1

Анализ кода:

  1. pd.Timestamp()Он может принимать входные данные в нескольких форматах, включая строки, объекты datetime и т. д.
  2. Timestamp предоставляет богатый набор атрибутов для доступа к различным частям даты и времени.
  3. dayofweekВозвращает 0-6, где 0 обозначает понедельник.

Пример 2: Обработка часовых поясов

Пример

import pandas as pd

# 1. Создать timestamp с часовым поясом
print("=== Создание Timestamp с часовым поясом ===")
ts_utc = pd.Timestamp('2023-01-01 12:00:00', tz='UTC')
print(f"Часовой пояс UTC: {ts_utc}")

ts_shanghai = pd.Timestamp('2023-01-01 20:00:00', tz='Asia/Shanghai')
print(f"Часовой пояс Шанхая: {ts_shanghai}")

# 2. Преобразование между разными часовыми поясами
print("\n=== Преобразование часового пояса ===")
ts_utc = pd.Timestamp('2023-01-01 12:00:00', tz='UTC')
ts_local = ts_utc.tz_convert('Asia/Shanghai')
print(f"Время UTC: {ts_utc}")
print(f"Преобразовано в Шанхай: {ts_local}")

# 3. Создание временной метки локального часового пояса (преобразование из naive в aware)
print("\n=== Преобразование локального времени в timezone-aware ===")
ts_naive = pd.Timestamp('2023-01-01 12:00:00')
print(f"Naive (без часового пояса): {ts_naive}")
ts_aware = ts_naive.tz_localize('Asia/Shanghai')
print(f"Добавлен часовой пояс Шанхая: {ts_aware}")

# 4. Использование сокращённых форм параметра tz
print("\n=== Сокращение часового пояса ===")
ts1 = pd.Timestamp('2023-01-01 12:00', tz='US/Eastern')
print(f"Восточное время США: {ts1}")
ts2 = pd.Timestamp('2023-01-01 12:00', tz='Europe/London')
print(f"Лондон: {ts2}")

Вывод:

=== 创建带时区的时间戳 ===
UTC 时区: 2023-01-01 12:00:00+00:00
上海时区: 2023-01-01 20:00:00+08:00

=== 时区转换 ===
UTC 时间: 2023-01-01 12:00:00+00:00
转换到上海: 2023-01-01 20:00:00+08:00

=== 本地时间转带时区 ===
无时区: 2023-01-01 12:00:00
添加上海时区: 2023-01-01 12:00:00+08:00

=== 时区简写 ===
美国东部: 2023-01-01 12:00:00-05:00
伦敦: 2023-01-01 12:00:00+00:00

Анализ кода:

  • tz_localizeИспользуется для добавления информации о часовом поясе к наивной метке времени Timestamp.
  • tz_convertИспользуется для преобразования между разными часовыми поясами.

Пример 3: Сравнение и операции с Timestamp

Пример

import pandas as pd

# 1. Сравнение Timestamp
print("=== Сравнение Timestamp ===")
ts1 = pd.Timestamp('2023-01-01')
ts2 = pd.Timestamp('2023-01-15')
ts3 = pd.Timestamp('2023-01-01')

print(f"ts1: {ts1}")
print(f"ts2: {ts2}")
print(f"ts1 < ts2: {ts1 < ts2}")
print(f"ts1 == ts3: {ts1 == ts3}")
print(f"ts1 != ts2: {ts1 != ts2}")

# 2. Операции между Timestamp и Timedelta
print("\n=== Операции с Timestamp и Timedelta ===")
ts = pd.Timestamp('2023-01-01 12:00:00')
td = pd.Timedelta(days=5, hours=3)

print(f"Исходная временная метка: {ts}")
print(f"Timedelta: {td}")
print(f"ts + td: {ts + td}")
print(f"ts - td: {ts - td}")

# 3. Вычитание двух временных меток для получения Timedelta
print("\n=== Вычитание двух временных меток ===")
ts1 = pd.Timestamp('2023-01-15 18:00:00')
ts2 = pd.Timestamp('2023-01-10 09:00:00')

diff = ts1 - ts2
print(f"ts1: {ts1}")
print(f"ts2: {ts2}")
print(f"ts1 - ts2: {diff}")
print(f"Дней: {diff.days}")
print(f"Часов: {diff.seconds / 3600}")

# 4. Использование временных меток в DataFrame
print("\n=== Метки времени в DataFrame ===")
df = pd.DataFrame({
    'event': ['event_a', 'event_b', 'event_c'],
    'timestamp': [
        pd.Timestamp('2023-01-01 10:00:00'),
        pd.Timestamp('2023-01-02 15:30:00'),
        pd.Timestamp('2023-01-03 09:45:00')
    ]
})
print(df)
print(f"\nДлительность события (относительно первого события):")
df['relative_days'] = (df['timestamp'] - df['timestamp'].iloc[0]).dt.days
print(df)

Вывод:

=== 时间戳比较 ===
ts1: 2023-01-01 00:00:00
ts2: 2023-01-15 00:00:00
ts1 < ts2: True
ts1 == ts3: True
ts1 != ts2: True

=== 时间戳与时间差运算 ===
原时间戳: 2023-01-01 12:00:00
时间差: 5 days 03:00:00
ts + td: 2023-01-06 15:00:00
ts - td: 2022-12-27 09:00:00

=== 两个时间戳相减 ===
ts1: 2023-01-15 18:00:00
ts2: 2023-01-10 09:00:00
ts1 - ts2: 5 days 09:00:00
天数: 5
小时: 9.0

=== DataFrame 中的时间戳 ===
        event           timestamp
0  event_a  2023-01-01 10:00:00
1  event_b  2023-01-02 15:30:00
2  event_c  2023-01-03 09:45:00

事件持续时间(相对于第一个事件):
        event           timestamp  relative_days
0  event_a  2023-01-01 10:00:00             0
1  event_b  2023-01-02 15:30:00             1
2  event_c  2023-01-03 09:45:00             2

Анализ кода:

  • Timestamp поддерживает операторы прямого сравнения (>, <, ==, !=).
  • Добавление Timedelta к Timestamp или вычитание Timedelta из Timestamp даёт новый Timestamp или Timedelta.
  • Вычитание двух меток времени даёт объект Timedelta.
  • Вычисления, связанные со временем, можно удобно выполнять в DataFrame.

Важные замечания

Важное примечание:

  • pd.TimestampПодобно datetime в Python, но обеспечивает более высокую производительность и больше методов.
  • Объекты Timestamp неизменяемы; операции модификации возвращают новые объекты.
  • Информацию о часовом поясе лучше всего указывать во время создания; изменение часового пояса позже может вызвать неоднозначность.
  • Используйте NaTpd.NaT(Not a Time) для представления отсутствующих значений времени.

Pandas 通用函数Часто используемые функции Pandas

Другие расширения