python数据间隔_如何用python绘制时间间隔数据?

这是一个有点不同的方法。对于标签使用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

品牌:

va2zm.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值