Функция Pandas pd.Timestamp()
Часто используемые функции 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: Базовое использование - Создание временных меток
Пример
# 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
Анализ кода:
pd.Timestamp()Он может принимать входные данные в нескольких форматах, включая строки, объекты datetime и т. д.- Timestamp предоставляет богатый набор атрибутов для доступа к различным частям даты и времени.
dayofweekВозвращает 0-6, где 0 обозначает понедельник.
Пример 2: Обработка часовых поясов
Пример
# 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
Пример
# 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 неизменяемы; операции модификации возвращают новые объекты.
- Информацию о часовом поясе лучше всего указывать во время создания; изменение часового пояса позже может вызвать неоднозначность.
- Используйте NaT
pd.NaT(Not a Time) для представления отсутствующих значений времени.
Другие расширения