Python 在直线图中用NaN或Superss直线填充缺失的日期时间

Python 在直线图中用NaN或Superss直线填充缺失的日期时间,python,pandas,matplotlib,Python,Pandas,Matplotlib,我在使用matplotlib使绘图看起来像我希望的那样时遇到问题。 我将数据(Y)聚合为float,与日期(X)对应为datetime64格式。我的数据从2019/04/23开始,到2019/08/02结束。不幸的是,数据不完整,我错过了2019/06/18和2019/07/08之间的一段时间 这导致了我的情节中这两个日期之间的一条直线,我想让它消失 我知道有一种可能是用熊猫来填充缺失的日期和时间以及列级别。正如我所读到的,matplotlib将忽略NaN,以便解决我的问题? 如果是这样,我该如

我在使用matplotlib使绘图看起来像我希望的那样时遇到问题。 我将数据(Y)聚合为float,与日期(X)对应为datetime64格式。我的数据从2019/04/23开始,到2019/08/02结束。不幸的是,数据不完整,我错过了2019/06/18和2019/07/08之间的一段时间

这导致了我的情节中这两个日期之间的一条直线,我想让它消失

我知道有一种可能是用熊猫来填充缺失的日期和时间以及列级别。正如我所读到的,matplotlib将忽略NaN,以便解决我的问题? 如果是这样,我该如何在我的情况下做到这一点?我已经尝试了很多代码片段,例如,使用DATETIME作为索引(为了不破坏下面的代码,我希望避免使用该索引)

另一种可能性:可能有一种策略,在打印时不接触数据框而仅抑制这条线?不干净,但足够有效。是的,一个带有点的散点图是一种避开直线的方法,但我需要这样的散点图

下面是我的数据帧的外观示例:

      DATETIME     LEVEL
0     2019-04-23 16:30:00  0.087074
1     2019-04-23 16:35:00  0.093089
2     2019-04-23 16:40:00  0.081103
3     2019-04-23 16:45:00  0.093117
4     2019-04-23 16:50:00  0.093131
5     2019-04-23 16:55:00  0.087145
6     2019-04-23 17:00:00  0.087159
7     2019-04-23 17:05:00  0.087174
8     2019-04-23 17:10:00  0.087188
您可以看到两条垂直的红线和绿线之间的线,这两条线有另一种含义


非常感谢您的时间和帮助

您只需要画两条线,而不是一条线。 将数据集划分到需要的位置,并分别绘制。 这里有一个简单的例子,有两条直线

plt.图([1,2,3,4],[5,5,5,5])
plt.绘图([7,8,9,10],[6,6,6,6])
plt.show()

假设我们有你的示例数据帧,但是中间的三行缺少:

In [65]: df
Out[65]: 
             DATETIME     LEVEL
0 2019-04-23 16:30:00  0.087074
1 2019-04-23 16:35:00  0.093089
2 2019-04-23 16:40:00  0.081103
3 2019-04-23 17:00:00  0.087159
4 2019-04-23 17:05:00  0.087174
5 2019-04-23 17:10:00  0.087188
现在,我们可以通过使用
DATETIME
列对数据帧进行索引,然后使用
resample()
来填充缺少的值。之后,我们可以再次重置索引,以将索引重新转换为正常列:

In [66]: df.set_index('DATETIME').resample('5min').first().reset_index()
Out[66]: 
             DATETIME     LEVEL
0 2019-04-23 16:30:00  0.087074
1 2019-04-23 16:35:00  0.093089
2 2019-04-23 16:40:00  0.081103
3 2019-04-23 16:45:00       NaN
4 2019-04-23 16:50:00       NaN
5 2019-04-23 16:55:00       NaN
6 2019-04-23 17:00:00  0.087159
7 2019-04-23 17:05:00  0.087174
8 2019-04-23 17:10:00  0.087188

是否要将其从轴中排除?还是只有空白?我不知道有什么办法不把它连接成直线图。我将分别绘制两侧。您可以在数据框中添加一个额外的日期,例如2019-06-25,并将其在级别列中的值设置为nan。谢谢,此解决方案与我想要的最接近,不仅因为它有助于填充行以便对其进行统计分析。然而,我最终创建了一个完全用NaN填充的新数据框,创建了日期并将其直接用作索引。随后,我使用combine_first()添加了数据。