2017-10-06 177 views
0

我有一個數據集,我試圖根據date-time可視化數據。我轉換的時間串入date-time格式由熊貓的陰謀給出了正確的陰謀,而matplotlib給出的錯誤

dataset = pd.read_csv('price.csv') 
dataset2=dataset[['Date','MCP']] 
dataset2['Date']=pd.to_datetime(dataset2['Date']) 

現在matplotlib

dataset2.plot() 

correct plot

但同樣繪圖,matplotlib

plt.plot(dataset2.index,dataset2['MCP']) 

wrong plot

有人可以向我解釋發生了什麼事嗎?我是否使用錯誤的方法或其他方法將string轉換爲date-time

+0

我們甚至不知道數據的樣子。但我想問題是它不是按順序排序的。 – ImportanceOfBeingErnest

+0

對不起,@ImportanceOfBeingErnest我會發佈一個數據的快照,但它被連續排序。問題在於日期時間的格式。在一天結束時,它曾經將「日」部分視爲月份,並一直延續到下個月。我將編輯我的解決方案,以包括詳細的問題解釋。所以,如果你可以幫助matplotlib爲什麼這樣認爲它和大熊貓解釋正確 – Yash

+0

我仍然是問題是由未分類的數據造成的。當然,這可能是由於它沒有被正確讀取而造成的。如果沒有[數據]的數據(不是實際的數據,但有一些數據來重現這個問題),我不認爲人們可以進一步提供幫助。 – ImportanceOfBeingErnest

回答

0

我找到了解決問題的辦法,但如果有人可以解釋的原因

dataset2['Date']=pd.to_datetime(dataset2['Date']).dt.strftime('%d/%m/%Y %H:%M:%S') 
dataset2['Date']=pd.to_datetime(dataset2['Date']) 

大熊貓在默認情況下將其轉換成不同的格式,所以我必須把它轉換回字符串與正確的格式由matplotlib可以接受的,然後再次將字符串轉換爲日期時間。有沒有其他方法可以做到這一點?

plt.plot(dataset2['Date'],dataset2['MCP']) 

plot

0

我想通了什麼matplotlib解釋,那就是: 只是簡單的轉換日期時間使用

dataset2['Date']=pd.to_datetime(dataset2['Date']) 

snapshot of data

服藥後第一個96個值(之後的日期改變),它的工作原理應該如此。 但之後(以第二天的價值等)它認爲時間戳的'日'部分爲月,並延長至下個月(直到出現該特定值)。

erroneous plot

P.S.-不得不寫的第二個答案,因爲不允許嵌入超過2個圖像直到聲譽10