Posted at

numpy.timedelta64で時刻データをチェック

More than 1 year has passed since last update.

例えば5万行の温度データは10分間隔で収集しているつもりだが, 本当に時刻カラムは10分間隔なのかをチェックしたいので, numpy.timedelta64()関数を使ってチェックすることができる.

import numpy as np

import pandas as pd

df = pd.DataFrame({
'時刻': pd.to_datetime(['2017-08-01 01:00:00', '2017-08-01 01:10:00', '2017-08-01 01:20:00', '2017-08-01 01:40:00'])
,'温度': [21, 22, 23,24]
})

i+1個目とi個目の時刻の差は<class 'pandas._libs.tslib.Timedelta'>

型で,下のようなフォーマットになっている.

0 days 00:10:00

0 days 00:10:00
0 days 00:20:00

時刻の差分を (delta_tmp / np.timedelta64(1, 'm')).astype(int)で計算して,整数に変換する.

for i in list(range(len(df['時刻'])-1)):

delta_tmp = df['時刻'][i+1] - df['時刻'][i]

# 時刻の差分は何分あるかを計算してintに変換
delta_final = (delta_tmp / np.timedelta64(1, 'm')).astype(int)

if delta_final != 10:
print(i+1, delta_final)

これで10分間隔のデータではないときに見つかるはず.