我正在尝试使用 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')
有什么想法吗?
谢谢!
最佳答案
错误信息
ValueError: could not convert string to float: '23:00:00'
暗示输入之一——可能是 df3['YYYY-MO-DD HH-MI-SS_SSS']
-- 当 ax.plot
时包含字符串期待 float 。
ax.plot
但是,也可以接受类似日期时间的对象而不是 float 。所以转换 df3['YYYY-MO-DD HH-MI-SS_SSS']
就足够了类似日期时间的对象。
使用 pandas,您可以使用 parse_dates
来做到这一点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])
<小时/>
例如,
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
np.random.seed(2016)
date_col = 'YYYY-MO-DD HH-MI-SS_SSS'
df = pd.DataFrame( {date_col: [
'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'],
'foo': np.random.random(24)})
df[date_col] = pd.to_datetime(df[date_col])
fig, ax = plt.subplots()
ax.plot(df[date_col], df['foo'], 'b-', linewidth=2, label='foo')
plt.show()
关于python - matplotlib:将小时字符串转换为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36947316/