2014-09-01 49 views
1

我在創建繪圖時以及將時間戳轉換爲日期時遇到問題。將時間戳轉換爲日期並在matplotlib中平等地繪製()

下面的代碼將雅虎財經的數據轉化爲熊貓數據框架。日期充當該文件中的數據集索引,看起來像這樣:

2007-05-01 00:00:00 

首先,我想該索引轉換從日期時間爲日期格式,但更重要的是,我想弄清楚出來重現在下面的代碼從rels.plot()獲得的曲線圖,使用matplotlib這樣我可以在給定日期添加的垂直線(格式不需要是完全一樣的。)

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重新創建。)

+0

做任何事情發生,或者它只是坐在那裏空白?另外,你有沒有嘗試過解決它?它對我來說工作得很好。 – 2014-09-01 21:37:45

+0

它打印出這兩個地塊? – Chris 2014-09-01 21:45:37

+0

就是這樣,謝謝!我應該一直在使用情節而不是Line2D。你知道我會如何去將eels.index轉換爲日期格式而不是日期時間嗎? – Chris 2014-09-01 22:51:52

回答

0

[從評論移至關閉此:]

相反的Line2D,它只是創建了一個線對象,如果你想真正做一個新的完整的情節你想

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

代替。

0

您可以使用strptime,並獲得了日期字符串插入到雅虎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)