搜索熊猫时间序列中缺少的时间戳?

时间:2019-12-07 15:44:28

标签: python pandas time-series

我有一个带有时间戳和一些值的时间序列。大约每5分钟加/减数据一次。但是在某些日子里根本没有任何时间戳,或者第一个时间戳可能只有下午3点左右,等等。我如何可视化/分析差距?

timestamp            temp
2016-08-02 00:14:01  12.1
2016-08-02 09:05:04  22.0
2016-08-02 09:09:44  12.9
2016-08-02 09:15:01  44.1
2016-08-02 09:19:54  11.3

2 个答案:

答案 0 :(得分:1)

您可以从以下开始:

df["dtime"]= df.timestamp.diff()                                                                                     

            timestamp  temp    dtime
0 2016-08-02 00:14:01  12.1      NaT
1 2016-08-02 09:05:04  22.0 08:51:03
2 2016-08-02 09:09:44  12.9 00:04:40
3 2016-08-02 09:15:01  44.1 00:05:17
4 2016-08-02 09:19:54  11.3 00:04:53

答案 1 :(得分:1)

df 中添加时差列:

df['tDiff'] = df.timestamp.diff()

然后,要查找与上一个时间间隔“过大”的行,请运行:

df[df.tDiff > pd.Timedelta('6M')]

当然,如何设置阈值timedelta是一个选择问题。 您可以取另一个值代替 6分钟

为了进行测试,我略微扩展了您的数据:

             timestamp  temp
0  2016-08-02 00:14:01  12.1
1  2016-08-02 09:05:04  22.0
2  2016-08-02 09:09:44  12.9
3  2016-08-02 09:15:01  44.1
4  2016-08-02 09:19:54  11.3
5  2016-08-02 23:58:54  10.0
6  2016-08-03 00:04:01  12.1
7  2016-08-03 09:05:04  22.0
8  2016-08-03 09:09:44  12.9
9  2016-08-03 09:15:01  44.1
10 2016-08-03 09:19:54  11.3

对于此数据,结果为:

            timestamp  temp    tDiff
1 2016-08-02 09:05:04  22.0 08:51:03
5 2016-08-02 23:58:54  10.0 14:39:00
7 2016-08-03 09:05:04  22.0 09:01:03

例如超过8小时后,开始读取 2016-08-02 09:05:04 在上一次阅读之后。

根据评论进行编辑

对于间隙的图形表示,另一种方法可能更有用。

  1. 添加以前的时间戳列( tDiff 的名称):

    df['tPrev'] = df.timestamp.shift()
    
  2. 使用“间隙的开始”和“间隙的结束”列创建一个DataFrame:

    gaps = df[(df.timestamp - df.tPrev) > pd.Timedelta('6M')][['tPrev', 'timestamp']]
    

对于我的源数据,结果是:

                tPrev           timestamp
1 2016-08-02 00:14:01 2016-08-02 09:05:04
5 2016-08-02 09:19:54 2016-08-02 23:58:54
7 2016-08-03 00:04:01 2016-08-03 09:05:04

但是如何生成这样的图片是一个很好的材料 另一个问题。