Pandas pd.Timestamp() 関数

Pandas 通用函数Pandas でよく使われる関数


pd.Timestamp()は Pandas ライブラリでタイムスタンプを作成するための関数です。多様な形式の日時入力を受け付け、正確な Timestamp オブジェクトを返します。

Timestamp は、Pandas において単一の時点を表すデータ型であり、Python 標準ライブラリの datetime.datetime を拡張したもので、より豊富な機能と優れたパフォーマンスを提供します。

単語の意味: 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)

パラメータの説明

パラメータ 型 必須かどうか 説明 デフォルト値
value 文字列、datetime、int、float 任意 変換する時間値。 None
year 整数 任意 年(4桁の数字)。 None
month 整数 任意 月(1〜12)。 None
day 整数 任意 日(1〜31)。 None
hour 整数 任意 時(0〜23)。 None
minute 整数 任意 分(0〜59)。 None
second 整数 任意 秒(0〜59)。 None
microsecond 整数 任意 マイクロ秒(0〜999999)。 None
nanosecond 整数 任意 ナノ秒(0〜999999)。 None
tz 文字列または tzinfo 任意 タイムゾーン情報。例:'UTC'、'Asia/Shanghai'。 None

戻り値の説明

  • 戻り値: datetime.datetime に似た Timestamp オブジェクトを返します。
  • 効果: さまざまな形式の時間データを正確な Pandas タイムスタンプに変換します。

例

簡単なものから複雑なものまで一連の例を通して、徹底的にpd.Timestamp()使い方をマスターしましょう。

例1:基本の使い方 - タイムスタンプの作成

例

import pandas as pd

# 1. 文字列を使用してタイムスタンプを作成
print("=== 文字列でタイムスタンプ作成 ===")
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. キーワード引数を使用してタイムスタンプを作成
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. タイムスタンプの属性を表示
print("n=== タイムスタンプの属性 ===")
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. タイムスタンプは、日時の各部分を取得するための豊富な属性を提供します。
  3. dayofweek0〜6を返し、0は月曜日を表します。

例2:タイムゾーンの処理

例

import pandas as pd

# 1. タイムゾーン付きタイムスタンプの作成
print("=== タイムゾーン付きタイムスタンプの作成 ===")
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. ローカルタイムゾーンのタイムスタンプを作成(タイムゾーンなし→あり)
print("n=== ローカル時間をタイムゾーン付きに変換 ===")
ts_naive = pd.Timestamp('2023-01-01 12:00:00')
print(f"タイムゾーンなし: {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:タイムスタンプの比較と演算

例

import pandas as pd

# 1. タイムスタンプの比較
print("=== タイムスタンプの比較 ===")
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. タイムスタンプと Timedelta の演算
print("n=== タイムスタンプと時間差の演算 ===")
ts = pd.Timestamp('2023-01-01 12:00:00')
td = pd.Timedelta(days=5, hours=3)

print(f"元のタイムスタンプ: {ts}")
print(f"時間差: {td}")
print(f"ts + td: {ts + td}")
print(f"ts - td: {ts - td}")

# 3. 2つのタイムスタンプを減算して Timedelta を取得
print("n=== 2つのタイムスタンプの減算 ===")
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

コードの解説:

  • タイムスタンプは直接の比較演算(<, ==, !=)をサポートします。
  • タイムスタンプと Timedelta の加算または減算により、新しいタイムスタンプまたは時間差が得られます。
  • 2つのタイムスタンプを減算すると、Timedelta オブジェクトが得られます。
  • DataFrame では、時間に関連する計算を簡単に行うことができます。

注意事項

重要な注意:

  • pd.TimestampPython の datetime に似ていますが、より高いパフォーマンスとより多くのメソッドを提供します。
  • タイムスタンプオブジェクトは不変であり、変更操作を行うと新しいオブジェクトが返されます。
  • タイムゾーン情報は作成時に指定するのが最善で、後から変更すると曖昧さが生じる可能性があります。
  • 使用pd.NaT(Not a Time)は欠損している時間値を表します。

Pandas 通用函数Pandas でよく使われる関数

その他の拡張