簡體   English   中英

時間序列累積總和的 Pythonic 代碼

[英]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)

這不太行...

作為參考,我正在研究有關電動汽車回扣的數據集 你可以找到數據的CSV我的GitHub庫在這里

您可以使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM