例えば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]
})
![Screen Shot 2017-08-05 at 9.47.26.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F54698%2F4ed53be0-301b-057a-90e4-9b8dc8647b59.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=486e2dc7a2c6eb6326ae99b9303b9369)
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分間隔のデータではないときに見つかるはず.