下面的代码片段显示3年间3家公司的收入增长/下降,但是以这种格式,我不知道如何添加以下内容:
1)怎么只看到3年中只有12个月(df.PublishedAtUtc.dt.month)或看到基于year(df.PublishedAtUtc.dt.year)的非常粗糙的图形,而不是看到36数量月周期(我尝试过其他参数,没有运气)
https://i.imgur.com/beiO8w2.png
sums = df.groupby(['Company Name', df.Datetime.dt.month])['PaidTotal'].sum().reset_index(level=0)
for company in sums['Company Name'].unique():
sums[sums['Company Name'] == company]['PaidTotal'].plot();
仅数据示例-原始数据包含数千行:
Company Name PaidTotal Datetime
585 CompanyA 218916.0 2016-10-14 10:51:07
586 CompanyB 430000.0 2016-01-23 11:05:08
591 CompanyB 546217.0 2016-09-26 14:20:00
592 CompanyC 73780.0 2016-12-07 07:52:01
593 CompanyA 132720.0 2017-10-04 16:14:10
595 CompanyC 52065.0 2017-11-12 14:32:40
585 CompanyA 234566.0 2017-10-14 10:51:07
586 CompanyB 252325.0 2017-01-23 11:05:08
591 CompanyB 546217.0 2018-09-26 14:20:00
592 CompanyC 745780.0 2018-12-07 07:52:01
593 CompanyA 1322320.0 2018-10-04 16:14:10
595 CompanyC 5432065.0 2018-11-12 14:32:40
答案 0 :(得分:0)
似乎您正在使用Datetime
对象存储日期,因此您可以使用Matplotlib的here文档中的plt.plot_date()
函数来解决问题。
此函数假定您将日期/时间存储为Datetime对象。因此,您必须通过传递xdate=True
来指定它(请参见下面的代码)。
要绘制日期范围为datetimes
的日期范围对象totals
的任何范围,请使用类似以下的方法:
plt.plot_date(dates,totals,xdate=True)
plt.xlabel('date')
plt.ylabel('totals')