删除缺失值的插值时间序列图

Lor*_*oli 7 python plot time-series matplotlib pandas

我正在尝试绘制时间序列数据,但我遇到了一些问题.

我正在使用此代码:

from matplotlib import pyplot as plt
plt.figure('Fig')
plt.plot(data.index,data.Colum,'g', linewidth=2.0,label='Data')
Run Code Online (Sandbox Code Playgroud)

我得到了这个: 在此输入图像描述

但我不想在缺失值之间插值!

我怎样才能做到这一点?

Pri*_*mer 5

由于您使用的是熊猫,您可以执行以下操作:

import pandas as pd
import matplotlib.pyplot as plt

pd.np.random.seed(1234)
idx = pd.date_range(end=datetime.today().date(), periods=10, freq='D')
vals = pd.Series(pd.np.random.randint(1, 10, size=idx.size), index=idx)
vals.iloc[4:8] = pd.np.nan
print vals
Run Code Online (Sandbox Code Playgroud)

这是来自 DataFrame 的列的示例,其中包含 DatetimeIndex

2016-03-29    4.0
2016-03-30    7.0
2016-03-31    6.0
2016-04-01    5.0
2016-04-02    NaN
2016-04-03    NaN
2016-04-04    NaN
2016-04-05    NaN
2016-04-06    9.0
2016-04-07    1.0
Freq: D, dtype: float64
Run Code Online (Sandbox Code Playgroud)

要在没有数据的日期的情况下绘制它,NaN您可以执行以下操作:

fig, ax = plt.subplots()
ax.plot(range(vals.dropna().size), vals.dropna())
ax.set_xticklabels(vals.dropna().index.date.tolist());
fig.autofmt_xdate()
Run Code Online (Sandbox Code Playgroud)

这应该产生这样的情节:

在此处输入图片说明

这里的技巧是用一些值范围替换日期,这些值在调用.plot方法时不会触发 matplotlib 的内部日期处理。

稍后,绘图完成后,用实际日期替换刻度标签。(可选)调用.autofmt_xdate()以使标签可读。