トップページ | ひとつ上のページ | 目次ページ | このサイトについて | ENGLISH

時刻と時間の扱い方

時系列解析 では、「時刻」と「時間」を区別します。 日常生活では混同して使われる言葉ですが、時系列解析では、「時刻」も「時間」も重要なデータです。

「時刻」とは、「2010年1月1日 5時30分」のようなデータのことです。
「時間」とは、「25年間」とか、「2時間7分」のようなデータのことです。 「時間」は、2つの「時刻」の差です。

例えば、2007年1月1日 0時0分0秒をコンピュータで扱う時は、 大きく分けて2種類あります。

20070101000000

ファイル名や、識別番号に使われる表記です。 このファイルがいつ出来たのかを、記録として残したい時に便利です。 しかし、一見すると時刻を表していても、
例えば、1 日前の「20061231000000」にしたい場合、 どこかの数字を 1 引けば良いわけでもなく不便です。
また、「20070101000000」 から 「20061231000000」 を引いても「1日」という 「時間」が求まらないことでも、この表記の不便さがわかります。

次の項と関係しますが、
「20070101000000」の形をコンピュータは時刻のデータ
「2007年 1月 1日 0時 0分 0秒」だと思っていません。
「20兆 701億 100万」だと思っています。
そのため、「20070101000000」の形では、 時間軸を正しく解析できないです。 (「20070101000000」の形でも、時刻の前後関係は間違ってはいないです。 そのため、解析結果が荒くなる可能性はありますが、解析に使えないこともないです。)

2007/1/1 00:00:00

例えばExcelなら、 この形をコンピュータは時刻のデータとして認識します。 ただし、人間には「/」や「:」が見えていてもコンピュータの中での扱い方は違います。 コンピュータの内部では、「39083」として扱い、画面の表示では、「/」や「:」を使います。 ちなみに、この日の12時なら「39083.5」です。 また次の日なら、「39084」です。
これは、「1900/1/1」を「1」として、 そこから何日目かを表しています。

この表記では、「時刻」の引き算をすると「時間」が求まります。
例えば「1日」は1、「1時間」は1/24なので、0.0416666…、です。

データサイエンス のソフトウェアでは、
「2007/1/1 00:00:00」を「39083」の形にしないと 時刻のデータ解析ができない場合があり、注意が必要です。

時間の単位の変換

「2007/1/1 01:00:00」と「2007/1/1 00:00:00」を引くと、「1(時間)」が求まりますが、特に何も指定しなければ、 「0.0416666…」という数字が表示されます。 これは、「0.0416666…(日)」という意味です。

「0.0416666…(日)」を「1(時間)」に変換するには、「24」をかける必要があります。

また、「60(分)」に変換するには、さらに「60」をかけます。 秒単位に変換するには、さらに「60」をかけます。

時間の単位の変換は、言われてみれば、そんなに難しい話には聞こえないと思います。 しかし、「1分は何日?」という風に、短い時間を「日」という単位で、考える事をする習慣はあまりないため、 初めての時は「???」となる人が多いようです。

「分」や「秒」の単位の値を、「日」にするには、24や60で割ります。 「2007/1/1 01:00:00 の形式の値に、35分を加える」といった作業をするには、必要な知識になります。


Excelでの変換式

Excelを使って、2つの形式を変換する時の数式を表にまとめてみました。 ちなみに、これは一例で、やり方は他にもあります。

数式は、A1セルに変換前の値が入っている事を想定した式になっています。

Excelでの変換式
変換前 数式 変換後
20080120 =DATE(MID(A1,1,4),MID(A1,5,2),MID(A1,7,2)) 2008/01/20
200801201234 =DATE(MID(A1,1,4),MID(A1,5,2),MID(A1,7,2))+MID(A1,9,2)/24+MID(A1,11,2)/24/60 2008/01/20 12:34
20080120123456 =DATE(MID(A1,1,4),MID(A1,5,2),MID(A1,7,2))+MID(A1,9,2)/24+MID(A1,11,2)/24/60+MID(A1,13,2)/24/60/60 2008/01/20 12:34:56
2008/01/20 =TEXT(A1,"yyyymmdd") 20080120
2008/01/20 12:34 =TEXT(A1,"yyyymmddhhmm") 200801201234
2008/1/20 12:34:56 =TEXT(A1,"yyyymmddhhmmss") 20080120123456

セルの書式設定

「20080120123456」を、「2008/01/20 12:34:56」に変換したい時に、 単純に上記の数式を入れると、図のように「39467.52426」という数字になります。
変換の例

「39467.52426」を、「2008/01/20 12:34:56」にするには、「セルの書式設定」の「ユーザー定義」を使って、書式を設定する必要があります。
変換の例

ちなみに、この書式にすると、日時の文字の長さがそろいます。 見た目を良くする目的でも、筆者はよく使っています。



0-1データの時系列解析

順路 次は 比率の指標

Tweet データサイエンス教室