发布于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黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!