看板 Python 關於我們 聯絡資訊
大家好 我是python新手,想請問 我有一個dataframe,其中一個column為時間,另一個為數字 想要以這個dataframe畫bar chart 以下是我的程式碼: import matplotlib.pyplot as plt import pandas df = pandas.DataFrame({'a':['090000','093000','100000','103000'],'b':[2,3,4,5]}) df['a']=pandas.to_datetime(df['a'],format='%H%M%S') print(df) fig = plt.figure() ax1=fig.add_subplot(111) ax1.bar(df['a'],df['b']) 但卻出現以下錯誤: TypeError: float() argument must be a string or a number, not 'Timestamp' 已經從網路上找了很久,還是無解... 不知道有沒有人知道怎麼解... 問了蠢問題讓大家見笑了 希望各位前輩可以幫幫我 非常感謝~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.105.73 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1458915318.A.432.html
painkiller: 最簡單的方法還是 df.plot.bar(x='a',y='b') 03/25 22:33
painkiller: 如果你不想用pandas內建的話要把timestamp轉成別的 03/25 22:34
painkiller: 比如說datetime之類的... pd.to_datetime(df['a']) 03/25 22:36
非常謝謝 不過我的df['a']原本是字串,已經被我用pandas.to_datetime(df['a'],'%H%M%S') 轉成時間了,結果就是出現timestamp格式 (資料原本就是字串,必須轉成時間畫圖) 不知道是不是還有其他將字串series轉成時間格式且非timestamp的方法...? 另外 df.plot.bar的確可以,真的非常感謝 不過由於被我轉成時間格式 所以x軸變成1900-01-01 09:00:00等,不知道有沒有方法可以轉成09:00:00就好...? 真的非常謝謝您,還煩請指教~~ ※ 編輯: tnek (220.135.105.73), 03/25/2016 23:14:42
painkiller: pandas的timestamp跟datetime兩者不相容是有點擾人... 03/26 10:18
painkiller: 要不就先轉成datetime用matplotlib畫 03/26 10:27
painkiller: 然後用matplotlib.date設定formatter跟locator 03/26 10:29
painkiller: 繼續用df.plot的話 str轉timestamp後還要再轉一次 03/26 10:29
painkiller: df['a']=df.a.map(lambda t: t.strftime('%H-%M-%S')) 03/26 10:30
真的很謝謝你的熱心 但小弟愚笨...不知道map是甚麼... 所以原本df['a']是字串格式 使用df.a.map(lambda t: t.strftime('%H-%M-%S')) 就可以使用plt.bar(df['a'],df['b'])畫出bar chart了嗎? 謝謝 ※ 編輯: tnek (220.135.105.73), 03/27/2016 16:22:21