【问题标题】:Convert a timestamp to date and plot() equivilant in matplotlib在 matplotlib 中将时间戳转换为日期和 plot() 等效项
【发布时间】:2014-10-26 02:37:50
【问题描述】:

我在创建绘图以及将时间戳转换为日期时遇到问题。

以下代码将来自 yahoo Finance 的数据提取到 pandas 数据框中。日期用作该文件中数据集的索引,如下所示:

2007-05-01 00:00:00

首先,我想将该索引从日期时间转换为日期格式,但更重要的是,我想弄清楚使用 matplotlib 在下面的代码中重现从rels.plot() 获得的图,以便我可以添加一个给定日期的垂直线(格式不需要完全相同。)

import pandas.io.data as web
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

all_data = {}
for ticker in ['AAPL','MSFT']:
        all_data[ticker] = web.get_data_yahoo(ticker, '5/1/2007','10/1/2007')

price = pd.DataFrame({tic:data['Adj Close']
                    for tic, data in all_data.iteritems()})

volume = pd.DataFrame({tic:data['Volume']
                    for tic, data in all_data.iteritems()})

returns = price.pct_change()
rels = price/price.ix[0]

rels.plot()

plt.Line2D(rels.index,rels.AAPL)
plt.show()

上面的代码会下载所有数据,以便您可以在需要时使用我在您的机器上使用的相同数据。现在,在我的 IP[y] 笔记本电脑上,此代码运行,但 plt.show() 不生成绘图。代码应该生成两个图(第一个是我试图用 matplotlib 重新创建的参考图。)

【问题讨论】:

  • 有什么事情发生吗,还是只是空无一物?另外,你有没有试过解决它?它对我来说很好用。
  • 它打印出两个图?
  • 就是这样,谢谢!我应该一直使用绘图而不是 Line2D。你知道我将如何将 eels.index 转换为日期格式而不是日期时间吗?

标签: python matplotlib pandas


【解决方案1】:

[从 cmets 移至关闭此:]

而不是 Line2D,它只是创建一个线对象,如果你想实际制作一个你想要的新完整图

plt.plot(rels.index, rels.AAPL)

改为。

【讨论】:

    【解决方案2】:

    您可以使用 strptime 和格式来获取要插入到 yahoo web.get 的日期字符串:

     import datetime as dt
    
     startdate = '5/1/2007'
     enddate = '10/1/2007'
    
     time_format = "%Y,%m,%d"
    
     dt_start = dt.datetime.strptime(startdate, time_format)
    
     dt_end = dt.datetime.strptime(enddate, time_format)
    
     The rest of the code example****** = web.get_data_yahoo(ticker, dt_start,dt_end)
    

    【讨论】:

      猜你喜欢
      • 2016-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 2021-02-12
      • 1970-01-01
      • 2021-06-12
      • 2020-10-19
      相关资源
      最近更新 更多