Ваша проблема - NaNs. Pandas передает данные в matplotlib для построения графика. Когда matplotlib видит NaN, он останавливает линию, которую он создает, и не запускается снова, пока не увидит другое значение. Поскольку вы рисуете линии, вы не видите ничего для годовых данных, потому что никогда не существует двух значений, которые могут быть связаны линией. Например, если вы планируете строить точки с merged.plot(style='o')
, вы увидите все данные.
Но, возможно, вам понравятся линии. Я могу придумать два способа сделать это.
Первый падает в Matplotlib
import matplotlib.pylab as plt
plt.figure()
plt.plot(merged.shopping_weightedQ.index, merged.shopping_weightedQ)
plt.plot(merged.shopping_weightedA.dropna().index, merged.shopping_weightedA.dropna())
Второй использует панды черчения, с общей осью Matplotlib:
import matplotlib.pylab as plt
plt.figure()
ax = plt.gca()
merged.shopping_weightedA.dropna().plot(ax=ax)
merged.shopping_weightedQ.plot(ax=ax)
Обратите внимание, что по причинам, я не совсем понимаю, в данный момент, вероятно, связанный с индексами и осью x, метод pandas не работает, если две команды сюжета меняются на противоположные, и вы планируете A после Q, если вы также не добавляете аргумент x_compat = True для каждой из команд графика.
В каждом из этих случаев вам, вероятно, придется испортить имена легенд.
Я предполагаю, что это лучший условный вариант для 'pandas', который не поддерживает его. Я удивлен, что они этого не делают, это, по-видимому, является стандартным требованием построения временных рядов .... – FooBar