作者tnek (AbiAbi)
看板Python
標題[問題]資料為時間 畫 bar chart
時間Fri Mar 25 22:15:15 2016
大家好
我是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://webptt.com/m.aspx?n=bbs/Python/M.1458915318.A.432.html
1F:推 painkiller: 最簡單的方法還是 df.plot.bar(x='a',y='b') 03/25 22:33
2F:→ painkiller: 如果你不想用pandas內建的話要把timestamp轉成別的 03/25 22:34
3F:→ 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
4F:推 painkiller: pandas的timestamp跟datetime兩者不相容是有點擾人... 03/26 10:18
5F:推 painkiller: 要不就先轉成datetime用matplotlib畫 03/26 10:27
6F:→ painkiller: 然後用matplotlib.date設定formatter跟locator 03/26 10:29
7F:→ painkiller: 繼續用df.plot的話 str轉timestamp後還要再轉一次 03/26 10:29
8F:→ 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