2015-03-08 3 views
2

У меня есть ряд временных рядов, для которых я создал как ежеквартальные, так и годовые суммы. Я хотел собрать их вместе, но сюжет показал только более частый. merged.plot() дает:Серия сюжетов разных частот

both frequencies

Вот некоторые выборочные данные.

>>> merged.head() 
      shopping_weightedQ    shopping_weightedA    
status     emp  unemp    emp  unemp 
date                  
2003-01-01   653.964346 696.178441   695.374248 755.180039 
2003-04-01   702.233863 647.461856    NaN   NaN 
2003-07-01   665.619252 774.226719    NaN   NaN 
2003-10-01   757.189689 932.586052    NaN   NaN 
2004-01-01   670.114570 751.718014   703.479640 839.858502 

ответ

3

Ваша проблема - 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 для каждой из команд графика.

В каждом из этих случаев вам, вероятно, придется испортить имена легенд.

+0

Я предполагаю, что это лучший условный вариант для 'pandas', который не поддерживает его. Я удивлен, что они этого не делают, это, по-видимому, является стандартным требованием построения временных рядов .... – FooBar

Смежные вопросы