[我正在尝试绘制一张图表,显示在不同的工作日期每天完成工作的时间。
我的熊猫数据框看起来像...
business_dt job_finish_time job_name
0 19/03/2020 20/03/2020 09:17:08 job_1
1 20/03/2020 21/03/2020 08:10:11 job_1
2 21/03/2020 22/03/2020 14:12:02 job_1
3 19/03/2020 20/03/2020 20:10:04 job_2
4 20/03/2020 21/03/2020 20:06:02 job_2
5 21/03/2020 22/03/2020 21:44:01 job_2
因此,x轴将显示业务dt(日期),y轴将显示作业完成的时间,hh24:mi:ss。
由于我对matplotlib相当陌生,因此在绘制Y轴(hh24:Mi:ss)时遇到困难。你们中的一位可以指导我如何使用matplotlib进行绘制吗?
任何帮助将不胜感激。
谢谢
使用datetime.strptime将数据转换为datetime.datetime
。请参阅文档here。
from datetime import datetime
datetime_y=[datetime.strptime(i, "%d/%m/%Y %H:%M:%S") for i in df['job_finish_time']]
datetime_x=[datetime.strptime(i, "%d/%m/%Y") for i in df['business_dt']]
plt.plot(datetime_x,datetime_y)
plt.show()
首先,如@Sameeresque所说,如果尚未将数据转换为日期时间,则需要将其转换为日期时间:
df.business_dt = pd.to_datetime(df.business_dt)
df.job_finish_time = pd.to_datetime(df.job_finish_time)
第二,我发现有必要使用
pd.plotting.register_matplotlib_converters()
为了绘制日期时间。最后,您可以使用Pandas日期时间序列处理来提取时间,然后正常绘制。请注意,您的数据有点奇怪(每天有两个值),因此看起来很奇怪:
df.business_dt = pd.to_datetime(df.business_dt)
df.job_finish_time = pd.to_datetime(df.job_finish_time)
pd.plotting.register_matplotlib_converters()
f, ax = plt.subplots(figsize=(10, 10))
ax.plot(df.business_dt, df.job_finish_time.dt.time)
输出: