2014-06-09 46 views
0

x軸的單天我得的數據是這樣的:繪製大熊貓DataFrames作爲在Python/Matplotlib

col1 ;col2 
2001-01-01;1 
2001-01-01;2 
2001-01-02;3 
2001-01-03;4 
2001-01-03;2 
2001-01-04;2 

我使用pd.read_csv(...)成數據幀讀它在Python /大熊貓。 現在我想在y軸上繪製col2並在日軸上繪製x軸上的col1。我搜索了很多,但無法詳細描述這一點的很多非常有用的頁面。我發現matplotlib當前不支持日期存儲在(datetime64)中的數據格式。

我試着將它像這樣:

fig, ax = plt.subplots() 
X = np.asarray(df['col1']).astype(DT.datetime) 
xfmt = mdates.DateFormatter('%b %d') 
ax.xaxis.set_major_formatter(xfmt) 
ax.plot(X, df['col2']) 
plt.show() 

但這不起作用。 什麼是最好的方法? 我只能找到那裏的位和那裏的位,但是沒有什麼工作在完整的,更重要的是,與最新版本的pandas/numpy/matplotlib的這個功能相關的最新資源。

我也很想這絕對日期轉換爲連續兩天,指數,即: 開始的第一天2001-01-01日1,因此數據是這樣的:

col1 ;col2 ; col3 
2001-01-01;1;1 
2001-01-01;2;1 
2001-01-02;3;2 
2001-01-03;4;3 
2001-01-03;2;3 
2001-01-04;2;4 
..... 
2001-02-01;2;32 

非常感謝您提前。

回答

0

好吧,據我所見,直接使用matplotlib就不需要了,但熊貓本身已經提供了繪圖功能,可以用作數據框對象的方法,請參閱http://pandas.pydata.org/pandas-docs/stable/visualization.html。這些函數本身使用matplotlib,但更易於使用,因爲它們本身可以正確處理數據類型:-)

0

Pandas.read_csv支持parse_dates = True(默認當然是False)這會節省您分別轉換日期。

此外,對於這樣一個簡單的數據框,pandas plot()函數可以很好地工作。 例如:

dates = pd.date_range('20160601',periods=4) 
dt = pd.DataFrame(np.random.randn(4,1),index=dates,columns=['col1']) 
dt.plot() 
plt.show()