2015-12-21 2 views
2

Я рисую несколько объектов серии панд «общих событий в неделю». Данные в серии events_per_week выглядит следующим образом:Как использовать серии Pandas для построения двух временных рядов разной длины/даты начала?

Datetime 
1995-10-09  45 
1995-10-16  63 
1995-10-23  83 
1995-10-30  91 
1995-11-06 101 
Freq: W-SUN, dtype: int64 

Моя проблема заключается в следующем. Все серии pandas имеют одинаковую длину, то есть начиная с того же 1995 года. Однако один массив начинается в 2003 году. events_per_week2003 начинается в 2003 году

Datetime 
    2003-09-08  25 
    2003-09-15  36 
    2003-09-22  74 
    2003-09-29  25 
    2003-09-05 193 
    Freq: W-SUN, dtype: int64 

import matplotlib.pyplot as plt 
fig = plt.figure(figsize=(20,5)) 
ax = plt.subplot(111) 
plt.plot(events_per_week) 
plt.plot(events_per_week2003) 

Я получаю следующее сообщение об ошибке значения.

ValueError: setting an array element with a sequence. 

Как это сделать?

+0

вы могли бы извлечь каждый столбец в переменную, а затем участка (х, у). Что такое 'events_per_week' в вашем коде? Серия? – tglaria

+0

@tglaria 'events_per_week' - это серия, начавшаяся в 1995 году. – JianguoHisiang

+0

@tglaria Я не понимаю этого: «вы можете извлечь каждый столбец в переменную, а затем график (x, y)» – JianguoHisiang

ответ

2

Я действительно не понимаю, где у вас проблемы. Я попытался воссоздать фрагмент кадра данных, и он без проблем.

import numpy, matplotlib 
data = numpy.array([45,63,83,91,101]) 
df1 = pd.DataFrame(data, index=pd.date_range('2005-10-09', periods=5, freq='W'), columns=['events']) 
df2 = pd.DataFrame(numpy.arange(10,21,2), index=pd.date_range('2003-01-09', periods=6, freq='W'), columns=['events']) 
matplotlib.pyplot.plot(df1.index, df1.events) 
matplotlib.pyplot.plot(df2.index, df2.events) 
matplotlib.pyplot.show() 

Использование серии вместо Dataframe:

ds1 = pd.Series(data, index=pd.date_range('2005-10-09', periods=5, freq='W')) 
ds2 = pd.Series(numpy.arange(10,21,2), index=pd.date_range('2003-01-09', periods=6, freq='W')) 
matplotlib.pyplot.plot(ds1) 
matplotlib.pyplot.plot(ds2) 
matplotlib.pyplot.show() 
+0

Проблема в том, что серия 'event_per_weeks' представляет собой гораздо более длинный массив, чем' event_per_weeks2003'. Таким образом, должен быть какой-то способ построить оба. – JianguoHisiang

+0

См. Выше. 'event_per_weeks' - это временный ряд 1100 недель, как и с 1995 года по настоящее время. 'event_per_weeks2003' - это временный ряд примерно 500 недель. При построении обоих одновременно существует значение ValueError. – JianguoHisiang

+0

Возможно, есть ошибка в исходном файле? Не могли бы вы его загрузить? Я рисую два кадра данных, никаких проблем. – tglaria

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