作者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/cn.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