我使用的数据来自使用pd.read_excel
的excel文件。
目标:使用格式为%Y-%m-%d %H:%M:%S
。
问题:X轴格式不是所需的%Y-%m-%d %H:%M:%S
。
下面是我使用的代码片段及其结果。我对编程很新,如果你们能指出我正确的方向,我会非常感激!
>>> df.head()
DateTime Value
0 2016-05-17 22:50:27 1914
1 2016-05-17 22:55:27 1597
2 2016-05-17 23:00:27 1429
3 2016-05-17 23:05:27 1462
4 2016-05-17 23:10:27 2038
>>> df['DateTime'] = pd.to_datetime(df['DateTime'], format='%Y-%m-%d %H:%M:%S')
>>> df.plot(x='DateTime', y='Value')
>>> plt.show()
日期时间与价值的关系曲线:
答案 0 :(得分:3)
您可以使用matplotlib.dates.DateFormatter
来实现此目标:
import matplotlib.dates as dates
df['DateTime'] = pd.to_datetime(df['DateTime'], format='%Y-%m-%d %H:%M:%S')
df.plot(x='DateTime', y='Value')
formatter = dates.DateFormatter('%Y-%m-%d %H:%M:%S')
plt.gcf().axes[0].xaxis.set_major_formatter(formatter)
结果:
to_datetime
将字符串转换为datetime64
dtype,它不会影响pandas或matplotlib中的显示,因此上面的方法正确。
但是,您可以使用dt.strftime
生成日期字符串以添加一列所需的日期字符串,但是这会为您提供一列字符串,这在我看来并不那么有用:
In [39]:
df['DateStrings'] = df['DateTime'].dt.strftime('%Y-%m-%d %H:%M:%S')
df
Out[39]:
DateTime Value DateStrings
0 2016-05-17 22:50:27 1914 2016-05-17 22:50:27
1 2016-05-17 22:55:27 1597 2016-05-17 22:55:27
2 2016-05-17 23:00:27 1429 2016-05-17 23:00:27
3 2016-05-17 23:05:27 1462 2016-05-17 23:05:27
4 2016-05-17 23:10:27 2038 2016-05-17 23:10:27
这导致情节:
df.plot(x='DateStrings', y='Value')
plt.show()
你可以看到x轴标签是duff,你需要旋转它们,使用前一种方法自动处理