【发布时间】:2018-04-08 17:33:57
【问题描述】:
我有一个带有 Date_of_Purchase 列的 pandas 数据框,其中包含许多 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。我开始研究一个解决方案,我循环遍历每个日期并计算所有小于该日期的日期,但这绝对是一个“非 Pythonic”解决方案。如何使用 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。
【问题讨论】:
-
听说过
cumsum? -
您可以添加一些具有所需输出的数据样本吗?
-
@cᴏʟᴅsᴘᴇᴇᴅ :适用于 MATLAB,但不适用于 Python ;)。你能演示一下它在约会时是如何工作的吗?我试过
np.cumsum(dop_phev)没有成功。
标签: python pandas datetime python-datetime