[英]Pythonic code for cumulative sum of a time series
我有一個帶有Date_of_Purchase
列的Date_of_Purchase
數據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
。 我開始研究一個解決方案,我循環遍歷每個日期並計算所有小於該日期的日期,但這絕對是一個“非 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)
這不太行...
您可以使用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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.