如何使用Pandas系列绘制两个不同长度/开始日期的时间序列?

时间:2015-12-21 17:28:49

标签: python pandas matplotlib time-series

我正在绘制几个大熊猫系列对象"每周总事件数"。系列events_per_week中的数据如下所示:

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

我的问题如下。所有大熊猫系列都是相同的长度,即从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.

我该怎么做?

1 个答案:

答案 0 :(得分:3)

我真的无法解决你遇到问题的地方。 我试图重新创建一个数据帧,并且没有任何问题。

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()

使用Series而不是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()