
Advent Calendar 2013 - 20
Python で解析! - Timestamp
今回は Timestamp について。 Python の datetime と同等と思われるが、 Pandas では Timestamp を使うようだ。効率がいいらしいが、詳しいことは未調査。まずは、使い方を。
1. Timestamp の生成
いつもなら、データの準備から始まるところだが、今回はなし。
早速 Timestamp を生成してみる。
import pandas as pd
import datetime
from datetime import timedelta
ts = pd.Timestamp('2013/12/4')
Timestamp('2013-12-04 00:00:00', tz=None)
外国風の書式でも OK 。
ts = pd.Timestamp('12/4/2013')
Timestamp('2013-12-04 00:00:00', tz=None)
区切りのない数字の羅列も認識する。
ts = pd.Timestamp('20131204')
Timestamp('2013-12-04 00:00:00', tz=None)
datetime からの変換も受け付けてくれる。
ts = pd.Timestamp(datetime.datetime(2013, 12, 4))
Timestamp('2013-12-04 00:00:00', tz=None)
2. タイムゾーンの設定
まずは UTC (GMT) で。
ts = pd.Timestamp('2013/12/4', tz='UTC')
Timestamp('2013-12-04 00:00:00+0000', tz='UTC')
日本時間は東京を指定する。
ts = pd.Timestamp('2013/12/4', tz='Asia/Tokyo')
Timestamp('2013-12-04 00:00:00+0900', tz='Asia/Tokyo')
3. タイムゾーンの変換
タイムゾーンを持ってるなら、当然、変換ができる。必要のない人も少なくないと思われるが、私は仕事の都合で不可避な立場にいる…。
ts = pd.Timestamp('2013/12/4', tz='UTC')
ts.tz_convert('Asia/Tokyo')
Timestamp('2013-12-04 09:00:00+0900', tz='Asia/Tokyo')
逆もしかり。
ts = pd.Timestamp('2013/12/4', tz='Asia/Tokyo')
ts.tz_convert('UTC')
Timestamp('2013-12-03 15:00:00+0000', tz='UTC')
4. Timestamp の演算
演算してみた。
pd.Timestamp('2013/12/1') - pd.Timestamp('2013/11/3')
datetime.timedelta(28)
timedelta が返ってきた。それなら 60 日前を求めるのは timedelta を使うに違いない。
pd.Timestamp('2013/12/1') - timedelta(days=60)
datetime.datetime(2013, 10, 2, 0, 0)
datetime が返ってきた。
5. その他、日付関連
datetime を継承しているのかもしれないが、datetime のメソッドは一通り持っている。
'{}/{}/{}'.format(ts.year, ts.month, ts.day)
'2013/12/4'
datetime にないものも。
'{} days {} quarter'.format(ts.dayofyear, ts.quarter)
'337 days 4 quarter'
標準の datetime や date を取得することもできる。
ts.to_datetime()
datetime.datetime(2013, 12, 4, 0, 0, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>)
ts.date()
datetime.date(2013, 12, 4)
今回はこんなところで。