簡體   English   中英

依靠熊貓的滾動時間窗口

[英]Count on a rolling time window in pandas

我正在嘗試返回關於(移動)固定點的時間窗口的計數。

它試圖隨時了解儀器的狀況,作為之前使用的函數。

因此,如果儀器在 12.05pm、12.10、12.15、12.30、12.40 和 1pm 使用,則使用計數將為:

12.05 -> 1(最后一小時一次)

12.10 -> 2

12.15 -> 3

12.30 -> 4

12.40 -> 5

1.00 -> 6

...但是可以說使用在 1.06 恢復:1.06 -> 6 這不會增加計數,因為第一次運行是一個多小時前。

如何計算此計數並將其附加為一列?

感覺這是一個 groupby/aggregate/count,可能在 lambda 函數中使用 timedeltas,但我不知道從哪里開始。

我也希望能夠使用時間窗口,所以不僅僅是過去的一小時,而是圍繞實例的小時,即 + 和 -30 分鍾。

以下代碼給出了一個起始數據幀:

s = pd.Series(pd.date_range('2020-1-1', periods=8000, freq='250s'))
df = pd.DataFrame({'Run time': s})
df_sample = df.sample(6000)
df_sample = df_sample.sort_index()

我找到的最好的幫助(公平地說,我通常可以從邏輯中破解)是滾動時間窗口上的這個Distinct 計數,但這次我沒有管理。

謝謝

我以前用DataFrame.rolling函數做過類似的DataFrame.rollinghttps : DataFrame.rolling

因此,對於您的數據集,首先您需要將索引更新為日期時間字段,然后您可以執行所需的分析,因此繼續您的代碼:

s = pd.Series(pd.date_range('2020-1-1', periods=8000, freq='250s'))
df = pd.DataFrame({'Run time': s})
df_sample = df.sample(6000)
df_sample = df_sample.sort_index()

# Create a value we can count
df_sample('Occurrences') = 1

# Set the index to the datetime element
df_sample = df_sample.set_index('Run time')

# Use Pandas rolling method, 3600s = 1 Hour
df_sample['Occurrences in Last Hour'] = df_sample['Occurrences'].rolling('3600s').sum()

df_sample.head(15)

                     Occurrences  Occurrences in Last Hour
Run time                                                   
2020-01-01 00:00:00            1                       1.0
2020-01-01 00:04:10            1                       2.0
2020-01-01 00:08:20            1                       3.0
2020-01-01 00:12:30            1                       4.0
2020-01-01 00:16:40            1                       5.0
2020-01-01 00:25:00            1                       6.0
2020-01-01 00:29:10            1                       7.0
2020-01-01 00:37:30            1                       8.0
2020-01-01 00:50:00            1                       9.0
2020-01-01 00:54:10            1                      10.0
2020-01-01 00:58:20            1                      11.0
2020-01-01 01:02:30            1                      11.0
2020-01-01 01:06:40            1                      11.0
2020-01-01 01:15:00            1                      10.0
2020-01-01 01:19:10            1                      10.0

您需要將索引設置為日期時間元素以利用時基窗口,否則您只能使用與行數相對應的整數值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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