Python - 使用pcolor和熊猫数据帧

时间:2015-10-21 13:01:04

标签: python pandas

我有一个4397L,39L的数据框,如下所示:

timestamp             0    1    2    3    4    5    6    7    8    9  ...   \                                                            
2013-04-17 05:00:00   46   46   46   45   45   45   45   45   45   45 ...    
2013-04-17 05:10:00   46   46   45   45   45   45   45   45   45   45 ...    
2013-04-17 05:20:00   45   46   45   45   45   45   45   45   45   45 ...    
2013-04-17 05:30:00   45   46   45   45   45   45   45   45   45   45 ...

当我使用:

绘制pcolor时
ax.pcolor(df) 

生成数据图。

但我希望时间(df.index)沿x轴标记,y轴标记为新的矢量x:

[-13.73038435 -12.73038435 -12.73038435 -11.73038435 -11.73038435
 -10.73038435 -10.73038435  -9.73038435  -9.73038435  -8.73038435
  -8.73038435  -7.73038435  -7.73038435  -6.73038435  -6.73038435
  -5.73038435  -5.73038435  -4.73038435  -4.73038435  -3.73038435
  -3.73038435  -2.73038435  -2.73038435  -1.73038435  -1.73038435
  -0.73038435  -0.73038435   0.26961565   0.26961565   1.26961565
   1.26961565   2.26961565   2.26961565   3.26961565   3.26961565
   4.26961565   4.26961565   5.26961565   5.26961565]

在matlab中,情况就是这样:

ax.pcolor(df.index, x, df.transpose())

尺寸为:

df = (4397, 39)
x = (, 39L)
df.index = (4397L,)

然而,同样的逻辑在Python中不起作用。给出的错误是:

AttributeError: 'DatetimeIndex' object has no attribute 'reshape'

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要从x和时间生成meshgrid。这是一个例子,我首先生成df(函数x *时间任意选择)。而且看起来你必须在绘图之前将DataFrame转换为数组。

time = sp.linspace(0, 10, 5)
x = sp.linspace(0, 1, 10)
TIME, X = sp.meshgrid(time, x)
df = pd.DataFrame(X * TIME).transpose()
df.index.name = 'time'
df.columns.name = 'x'

X, TIME = sp.meshgrid(x, time)
plt.pcolor(X, TIME, sp.array(df))

enter image description here