搜索时间序列中丢失的时间戳?

2024-05-17 03:43:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有时间戳和一些值的时间序列。数据大约每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

Tags: 数据可视化时间序列temptimestamp差距
2条回答

在您的df中添加时差列:

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

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

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

当然,如何设置阈值timedelta是一个选择问题。 您可以取另一个值,而不是6 min

为了测试,我稍微扩展了你的数据:

             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

例如,截至2016-08-02 09:05:04的读数在超过8小时后出现 在上次阅读之后

在注释后编辑

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

  1. 添加上一个时间戳列(插入tDiff):

    df['tPrev'] = df.timestamp.shift()
    
  2. 创建一个包含“间隔开始”和“间隔结束”列的数据帧:

    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

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

您可以从以下内容开始:

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

相关问题 更多 >