可视化值分布不均匀的两个数据集的共享正常运行时间
Visualize shared uptime of two datasets with uneven distribution of values
我有两个 DataFrame,它们都包含来自传感器的结果值。传感器没有定期轮询,有时会中断几天。
我现在想要的是传感器系统共享 uptime/downtime 的可视化表示。出于实际目的,我们假设如果两个数据点相隔不到 24 小时,则传感器被视为“启动”。
到目前为止我已经尝试过:
fig=go.Figure()
fig.add_trace(go.Scatter(x=Sensordata1.index,y=(np.diff(Sensordata2.index) < np.timedelta64(24,'h')),fill='tonexty'))
fig.add_trace(go.Scatter(x=Sensordata2.index,y=(np.diff(Sensordata2.index) < np.timedelta64(24,'h')),fill='tonexty'))
fig.show()
这给了我几乎想要的结果:
Example plot here
如您所见,已经可以从图表中读取共享的正常运行/停机时间,但我希望图表不要在 True 和 False 之间进行线性插值,而是保持恒定值直到它发生变化。我怎样才能最轻松地做到这一点?
奖金问题:对于两个不一定在其时基中共享公共间隔的数据帧,获取作为日期时间值的运行时间和停机时间的最简单方法是什么? (在目前的情况下,我可能更容易手工完成,但我很好奇...)
不同的插值方法见这里:
https://plotly.com/python/line-charts/#interpolation-with-line-plots
在您的情况下,您可能会通过以下方式实现预期行为:
fig = go.Figure()
fig.add_trace(
go.Scatter(
x=Sensordata1.index,
y=(np.diff(Sensordata2.index) < np.timedelta64(24, "h")),
fill="tonexty",
line_shape="hv",
)
)
fig.add_trace(
go.Scatter(
x=Sensordata2.index,
y=(np.diff(Sensordata2.index) < np.timedelta64(24, "h")),
fill="tonexty",
line_shape="hv",
)
)
fig.show()
如果没有一些示例数据,您的奖金问题很难完全理解。但是您可以考虑使用 pd.DataFrame.resample()
将两个时间序列重新采样为公共时间步长
我有两个 DataFrame,它们都包含来自传感器的结果值。传感器没有定期轮询,有时会中断几天。 我现在想要的是传感器系统共享 uptime/downtime 的可视化表示。出于实际目的,我们假设如果两个数据点相隔不到 24 小时,则传感器被视为“启动”。
到目前为止我已经尝试过:
fig=go.Figure()
fig.add_trace(go.Scatter(x=Sensordata1.index,y=(np.diff(Sensordata2.index) < np.timedelta64(24,'h')),fill='tonexty'))
fig.add_trace(go.Scatter(x=Sensordata2.index,y=(np.diff(Sensordata2.index) < np.timedelta64(24,'h')),fill='tonexty'))
fig.show()
这给了我几乎想要的结果: Example plot here
如您所见,已经可以从图表中读取共享的正常运行/停机时间,但我希望图表不要在 True 和 False 之间进行线性插值,而是保持恒定值直到它发生变化。我怎样才能最轻松地做到这一点?
奖金问题:对于两个不一定在其时基中共享公共间隔的数据帧,获取作为日期时间值的运行时间和停机时间的最简单方法是什么? (在目前的情况下,我可能更容易手工完成,但我很好奇...)
不同的插值方法见这里:
https://plotly.com/python/line-charts/#interpolation-with-line-plots
在您的情况下,您可能会通过以下方式实现预期行为:
fig = go.Figure()
fig.add_trace(
go.Scatter(
x=Sensordata1.index,
y=(np.diff(Sensordata2.index) < np.timedelta64(24, "h")),
fill="tonexty",
line_shape="hv",
)
)
fig.add_trace(
go.Scatter(
x=Sensordata2.index,
y=(np.diff(Sensordata2.index) < np.timedelta64(24, "h")),
fill="tonexty",
line_shape="hv",
)
)
fig.show()
如果没有一些示例数据,您的奖金问题很难完全理解。但是您可以考虑使用 pd.DataFrame.resample()
将两个时间序列重新采样为公共时间步长