我有一个熊猫数据框,其中的列Date_of_Purchase具有许多datetime值:

dop_phev = rebates[rebates['Vehicle_Type']=='Plug-in Hybrid']['Date_of_Purchase']
dop_phev


输出:

0     2015-07-20
1     2015-07-20
3     2015-07-20
4     2015-07-24
5     2015-07-24
     ...
502   2017-09-16
503   2017-09-18
504   2017-06-14
505   2017-09-21
506   2017-09-22
Name: Date_of_Purchase, Length: 383, dtype: datetime64[ns]`


我想绘制累计购买量y与日期x的关系图。我开始研究一个解决方案,其中遍历每个日期并计算少于该日期的所有日期,但这绝对是一个“非Python的”解决方案。如何使用pythonic代码完成此操作?

编辑:我不确定到底是什么样,但这是我当前的解决方案:

dop_phev = rebates[rebates['Vehicle_Type']=='Plug-in Hybrid']['Date_of_Purchase']
cum_count = np.zeros(len(dop_phev.unique()))
for i, date in enumerate(dop_phev.unique()):
    cum_count[i] = sum(dop_phev<date)
plt.plot(dop_phev.unique(),cum_count)


这不太有效...

作为参考,我正在研究this dataset电动汽车的回扣。您可以在我的GitHub存储库here上找到数据的CSV。

最佳答案

您可以使用Series.groupby,然后使用Series.plot

dop_phev = dop_phev.groupby(dop_phev).apply(lambda x: sum(dop_phev<x.name))
print (dop_phev)
2015-07-20    0
2015-07-24    3
2017-06-14    5
2017-09-16    6
2017-09-18    7
2017-09-21    8
2017-09-22    9
Name: Date_of_Purchase, dtype: int64

dop_phev.plot()

10-06 09:29