matplotlib:将Hour字符串转换为float

时间:2016-04-29 20:57:02

标签: python matplotlib

我尝试使用matplotlib将以下csv数据绘制为x轴:

Time
00:00:00
01:00:00
02:00:00
03:00:00
04:00:00
05:00:00
06:00:00
07:00:00
08:00:00
09:00:00
10:00:00
11:00:00
12:00:00
13:00:00
14:00:00
15:00:00
16:00:00
17:00:00
18:00:00
19:00:00
20:00:00
21:00:00
22:00:00
23:00:00

但我一直收到错误:

ValueError: could not convert string to float: '23:00:00'

如何在matplotlib中将这些值转换为小时格式?

这是我的代码:

fig = plt.figure(figsize=(15,7))
ax = fig.add_subplot(1,1,1) # row-col-num
# --- line plot data on the Axes
ax.plot(df3['YYYY-MO-DD HH-MI-SS_SSS'], df3['ATMOSPHERIC PRESSURE (hPa) mean'], 'b-', linewidth=2,
label=r'office Phone1')

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

错误消息

ValueError: could not convert string to float: '23:00:00'

暗示其中一个输入 - 可能是df3['YYYY-MO-DD HH-MI-SS_SSS'] - 包含ax.plot期待浮点数时的字符串。

但是,

ax.plot可以接受类似日期时间的对象而不是浮点数。因此将df3['YYYY-MO-DD HH-MI-SS_SSS']转换为类似日期时间的对象就足够了。

使用pandas,您可以使用parse_dates的{​​{1}}参数执行此操作(假设pd.read_csv定义为df3),或者您可以将该列转换为日期时间 - 喜欢事后的事物:

pd.read_csv

例如,

date_col = 'YYYY-MO-DD HH-MI-SS_SSS'
df3[date_col] = pd.to_datetime(df3[date_col])

enter image description here