如何使用NaN值制作连续线图?

时间:2014-10-16 19:13:10

标签: matplotlib pandas

如何制作一个忽略NaN数据的线图,以便我有连续的线?因此,例如,通过下面的数据,每个其他观察都是连接的。

enter image description here

cpu = DataFrame.from_dict({'{host=ny-service05}': {Timestamp('2014-10-16 14:19:36'): nan,
 Timestamp('2014-10-16 14:19:41'): 19.199999999999999,
 Timestamp('2014-10-16 14:19:51'): nan,
 Timestamp('2014-10-16 14:19:56'): 17.333333333333332,
 Timestamp('2014-10-16 14:20:06'): nan},
'{host=ny-service04}': {Timestamp('2014-10-16 14:19:36'): 13.866666666666667,
 Timestamp('2014-10-16 14:19:41'): nan,
 Timestamp('2014-10-16 14:19:51'): 12.466666666666667,
 Timestamp('2014-10-16 14:19:56'): nan,
 Timestamp('2014-10-16 14:20:06'): 18.399999999999999}})

2 个答案:

答案 0 :(得分:1)

如果每个其他数据都是NaN,您可以使用以下方法之一对其进行切片:

plot(time[::2], dat[::2])
plot(time[1::2], dat[1::2])

或者如果数据不那么规律,您可以创建一个用于创建新数组的逻辑数组:

logic_array = ~(np.isnan(dat))

plot(time[logic_array], dat[logic_array])

请注意,后一种方法效率不高,因为它创建了数组副本而不是视图check this out),但这就是它的工作方式。< / p>

答案 1 :(得分:1)

如何使用interpolate()

cpu.interpolate().plot()