プログラミングにおける時系列データは、様々な分野において重要なデータ構造である。

時系列データには主に、特定の時刻を表すタイムスタンプや、今月・今年などの一定期間を表すもの、また開始時刻と終了時刻によって特定される時間の間隔などがある。

pandasは、時系列データを扱うためのツールを多数持っており、これにより巨大な時系列データを効率よく扱うことができる。

今回はPython標準のライブラリを使って、時系列データの扱いについて簡単に紹介していく。

現在時刻のタイムスタンプを取得する

まずは時系列の基礎、タイムスタンプを取得する方法を見てみよう。

datetimeライブラリをインポートし、now関数で現在時刻のタイムスタンプを取得する。

from datetime import datetime

now = datetime.now()

now
# datetime.datetime(2019, 10, 3, 23, 21, 30, 775952)

タイムスタンプには、年月日などを表す属性も用意されている。

now.year, now.month, now.day
# (2019, 10, 3)

日付と時間の差を表すtimedelta

datetimeは日付と時間の情報をマイクロ秒単位で持ち、timedeltaではdatetimeオブジェクトやdateオブジェクト間の差を求めることができる。

delta = datetime(2019, 10, 2) - now

delta
# datetime.timedelta(days=-2, seconds=2309, microseconds=224048)

delta.days
# -2

delta.seconds
# 2309

さて、次はこのtimedeltaオブジェクトを使って、datetimeオブジェクトに足したり引いたりといった処理をし、時間差のある新たなdatetimeオブジェクトを作る例を見てみよう。

from datetime import timedelta

start = datetime(2019, 10, 2)

# 12日進める
start + timedelta(12)
# datetime.datetime(2019, 10, 14, 0, 0)

# 24日戻す
start - 2 * timedelta(12)
# datetime.datetime(2019, 9, 8, 0, 0)

datetimeモジュールに含まれるデータ型

データ型説明
date年月日の情報を持つ
time1日の時間情報(時分秒、マイクロ秒)を持つ
datetime日付、時間両方の情報を持つ
timedelta二つのdatetime型の値の差を、日・秒・マイクロ秒で表す
tzinfoタイムゾーン情報を持つ基本の型