这是一个有点不同的方法。对于标签使用ax.注释. 我把标签上的日期,不知道你是要这些标签或发动机号。我肯定你从这里得到了:import pandas as pd
df = pd.DataFrame({‘Eng’:[‘eng1′,’eng1′,’eng1′,’eng2′,’eng3′,’eng4′,’eng4′,’eng4′,’eng5′,’eng5’],
‘Install date’:[‘3/6/2010′,’10/25/2010′,’1/1/2014′,’1/1/2011′,’1/1/2014′,’1/1/2015′,’1/5/2016′,’5/8/2017′,’2/3/2010′,’1/1/2011’],
‘Car’:[‘car1′,’car1′,’car2′,’car3′,’car1′,’car1′,’car3′,’car2′,’car1′,’car4’]})
df
Out[47]:
Eng Install date Car
0 eng1 3/6/2010 car1
1 eng1 10/25/2010 car1
2 eng1 1/1/2014 car2
3 eng2 1/1/2011 car3
4 eng3 1/1/2014 car1
5 eng4 1/1/2015 car1
6 eng4 1/5/2016 car3
7 eng4 5/8/2017 car2
8 eng5 2/3/2010 car1
9 eng5 1/1/2011 car4
df[‘Install date’] = pd.to_datetime(df[‘Install date’])
for car in df.Car.unique():
most_recent_eng = df.loc[df.Car == car].groupby(‘Install date’).max().tail(1).Eng.iloc[0]
new_df = df.loc[df.Car == car].append(pd.DataFrame({‘Car’:[car],’Eng’:[most_recent_eng],’Install date’:[pd.to_datetime(‘now’)]}), sort=False)
piv = new_df.pivot_table(values=’Car’,columns=’Eng’,index=’Install date’, aggfunc=’count’)
piv = piv.reindex(columns=piv.ffill().sum().sort_values(ascending=False).index).ffill()
ax = piv.plot(marker=’o’, linestyle=’-‘,linewidth=2, title=car, ms=4)
j = 0.005
i = 1
for date, eng in zip(new_df[:-1][‘Install date’].tolist(),new_df[:-1][‘Eng’].tolist()):
ax.annotate(date.strftime(“%Y-%m-%d”), (date, 1.00), xycoords=’data’,xytext=(date, 1.00+i*j), textcoords=’data’,
arrowprops=dict(arrowstyle=”->”),
)
j+=0.005
i = -1*i
品牌:
Original: https://blog.csdn.net/weixin_42184237/article/details/113983099
Author: 无不散席
Title: python数据间隔_如何用python绘制时间间隔数据?
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/679389/
转载文章受原作者版权保护。转载请注明原作者出处!