Python 在直线图中用NaN或Superss直线填充缺失的日期时间
我在使用matplotlib使绘图看起来像我希望的那样时遇到问题。 我将数据(Y)聚合为float,与日期(X)对应为datetime64格式。我的数据从2019/04/23开始,到2019/08/02结束。不幸的是,数据不完整,我错过了2019/06/18和2019/07/08之间的一段时间 这导致了我的情节中这两个日期之间的一条直线,我想让它消失 我知道有一种可能是用熊猫来填充缺失的日期和时间以及列级别。正如我所读到的,matplotlib将忽略NaN,以便解决我的问题? 如果是这样,我该如何在我的情况下做到这一点?我已经尝试了很多代码片段,例如,使用DATETIME作为索引(为了不破坏下面的代码,我希望避免使用该索引) 另一种可能性:可能有一种策略,在打印时不接触数据框而仅抑制这条线?不干净,但足够有效。是的,一个带有点的散点图是一种避开直线的方法,但我需要这样的散点图 下面是我的数据帧的外观示例: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,以便解决我的问题? 如果是这样,我该如
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()添加了数据。