程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

计算时差,如果时差大于一个小时,则标记为“缺失”,在该区域的折线图中绘制间隙

发布于2020-02-28 14:50     阅读(1275)     评论(0)     点赞(21)     收藏(2)


我在python中有一个基本的pandas数据框,它接收数据并绘制折线图。每个数据点都涉及一个时间。如果数据文件一切正常,则理想情况下,每个时间戳大约相差30分钟。在某些情况下,没有一个小时以上的数据通过。在这段时间里,我想将此时间段标记为“缺失”,并绘制一个不连续的折线图,以公然显示丢失数据的位置。

我很难解决这个问题,甚至很难找到解决方案,因为问题很具体。数据是“实时的”,并且会不断更新,因此我不能仅查明某个区域并进行编辑作为解决方法。

看起来像这样:

用于创建日期时间列的代码:

#convert first time columns into one datetime column
df['datetime'] = pd.to_datetime(df[['year', 'month', 'day', 'hour', 'minute', 'second']])

我已经弄清楚了如何计算时差,其中包括创建一个新列。这是代码,以防万一:

df['timediff'] = (df['datetime']-df['datetime'].shift().fillna(pd.to_datetime("00:00:00", format="%H:%M:%S")))

基本看一下数据框:

datetime               l1    l2    l3
2019-02-03 01:52:16   0.1   0.2   0.4
2019-02-03 02:29:26   0.1   0.3   0.6
2019-02-03 02:48:03   0.1   0.3   0.6
2019-02-03 04:48:52   0.3   0.8   1.4
2019-02-03 05:25:59   0.4   1.1   1.7
2019-02-03 05:44:34   0.4   1.3   2.2

我只是不确定如何创建一个包含时差的不连续“实时”图。

提前致谢。


解决方案


使用我的新timediff列和df.loc函数解决了。

df['timediff'] = (df['datetime']-df['datetime'].shift().fillna(pd.to_datetime("00:00:00", format="%H:%M:%S")))

这样我就可以收集每一行的时差。

然后使用df.loc,我能够在timediff大于一个小时的l1和l2列中找到值,然后将其设为nan。就像我想要的那样,结果是该时间点的绘图中缺少一条线。

missing_l1 = df['l1'].loc[df['timediff'] > timedelta(hours=1)] = np.nan
missing_l2 = df['l2'].loc[df['timediff'] > timedelta(hours=1)] = np.nan


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/236107/b7ea0c3311c3ed523c26/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

21 0
收藏该文
已收藏

评论内容:(最多支持255个字符)