[問題]資料為時間 畫 bar chart

看板Python作者 (AbiAbi)時間9年前 (2016/03/25 22:15), 9年前編輯推噓3(305)
留言8則, 1人參與, 最新討論串1/1
大家好 我是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

03/25 22:33, , 1F
最簡單的方法還是 df.plot.bar(x='a',y='b')
03/25 22:33, 1F

03/25 22:34, , 2F
如果你不想用pandas內建的話要把timestamp轉成別的
03/25 22:34, 2F

03/25 22:36, , 3F
比如說datetime之類的... pd.to_datetime(df['a'])
03/25 22:36, 3F
非常謝謝 不過我的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

03/26 10:18, , 4F
pandas的timestamp跟datetime兩者不相容是有點擾人...
03/26 10:18, 4F

03/26 10:27, , 5F
要不就先轉成datetime用matplotlib畫
03/26 10:27, 5F

03/26 10:29, , 6F
然後用matplotlib.date設定formatter跟locator
03/26 10:29, 6F

03/26 10:29, , 7F
繼續用df.plot的話 str轉timestamp後還要再轉一次
03/26 10:29, 7F

03/26 10:30, , 8F
df['a']=df.a.map(lambda t: t.strftime('%H-%M-%S'))
03/26 10:30, 8F
真的很謝謝你的熱心 但小弟愚笨...不知道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
文章代碼(AID): #1MzKVsGo (Python)
文章代碼(AID): #1MzKVsGo (Python)