我有一个数据框来计算测量数量的每日平均值。
index_date = pd.Index(t,name =' dates')#t是一个日期时间对象数组
df = pd.DataFrame(gas,index_date,columns = [' A'],dtype = float)
daily_mean = df.resample(' D',how ='表示')
为了能够绘制数据,我重置索引并创建numpy数组
daily_mean.reset_index(就地= TRUE)
date = np.array(daily_mean [' date'])
表示= np.array(daily_mean [' A'])
我现在的问题是: 时机不正确。 例如,datetime对象datetime.datetime(1979,8,27,10,0)是t中的第一个对象转换为' 1979-08-27T01:00:00.0000 + 0100'在np.array日期。 为什么会发生这种情况以及如何获得正确的时间?
提前感谢任何想法或有用的评论。
答案 0 :(得分:0)
时间不是'不正确',它只是一个笨拙的特点:numpy在当地时区打印datetime64值
例如,我位于GMT + 01时区:
In [24]: np.datetime64('2014-01-01 00:00:00+00:00')
Out[24]: numpy.datetime64('2014-01-01T01:00:00+0100')
但价值本身并没有改变。您可以通过将其转换回datetime.datetime来查看此内容:
In [26]: np.datetime64('2014-01-01 00:00:00+00:00').item()
Out[26]: datetime.datetime(2014, 1, 1, 0, 0)
In [27]: print np.datetime64('2014-01-01 00:00:00+00:00').item()
2014-01-01 00:00:00
对于绘图部分:您也可以daily_mean['A'].plot()
答案 1 :(得分:0)
您无需将数据转换为numpy数组以进行绘制。只是使用例如。
fig, ax = plt.subplots()
ax.plot(daily_mean.index, daily_mean.values)
plt.show()
为什么在将datetime索引转换为numpy数组时会发生更改,我不知道,但这似乎是一个棘手的问题(Converting between datetime, Timestamp and datetime64)。当您将带有日期的数组放回到数据框中时,它们将再次以正确的形式出现。