亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對具有相同時間戳的時間序列進行分組

對具有相同時間戳的時間序列進行分組

繁花如伊 2023-02-07 13:55:29
對 Pandas 相當陌生,并開始掌握這個概念。希望你能給我指明正確的方向。我是以下結構的測量溫度值的數據集。該數據集大約有 1-2 百萬個條目。由于某些傳感器在某個時候出現故障,因此我存在相當多的缺失數據。                          location  temperaturetimestamp                                      2019-08-22 21:28:56         Garage        23.542019-08-22 21:29:44        bedroom        23.332019-08-23 22:21:06       outside1        25.002019-08-23 22:21:33       outside2        24.122019-08-22 21:29:53         Garage        23.40[...]我想做的是以這樣一種方式重新采樣數據集,即各個傳感器的時間戳排成一行。具體來說,我希望能夠計算各種傳感器的均值/差異。我怎樣才能做到這一點?總的來說,我不確定表示此類數據以使其易于使用的最佳方法是什么。我知道創建組,這已經是一個很好的開始。但我仍然不知道如何以簡單的方式在傳感器之間創建這些計算。任何幫助將不勝感激。謝謝!
查看完整描述

1 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

我認為最好的方法是首先旋轉數據框,這樣每個傳感器都有一個時間序列列:


df.pivot(columns="location", values="temperature")                                                                                        


location             Garage  bedroom  outside1  outside2

timestamp                                               

2019-08-22 21:28:56   23.54      NaN       NaN       NaN

2019-08-22 21:29:44     NaN    23.33       NaN       NaN

2019-08-22 21:29:53   23.40      NaN       NaN       NaN

2019-08-23 22:21:06     NaN      NaN      25.0       NaN

2019-08-23 22:21:33     NaN      NaN       NaN     24.12

然后你可以用插值法填充缺失的數據


df.pivot(columns="location", values="temperature").interpolate(method="time", limit_direction="both")                                     


location                Garage  bedroom  outside1  outside2

timestamp                                                  

2019-08-22 21:28:56  23.540000    23.33      25.0     24.12

2019-08-22 21:29:44  23.422105    23.33      25.0     24.12

2019-08-22 21:29:53  23.400000    23.33      25.0     24.12

2019-08-23 22:21:06  23.400000    23.33      25.0     24.12

2019-08-23 22:21:33  23.400000    23.33      25.0     24.12

現在你應該讓所有數據點在時間上對齊,你可以重新采樣到一個恒定的采樣率,比方說“1 分鐘”


df.pivot(columns="location", values="temperature").interpolate(method="time", limit_direction="both").resample("1 min").mean()            


location                Garage  bedroom  outside1  outside2

timestamp                                                  

2019-08-22 21:28:00  23.540000    23.33      25.0     24.12

2019-08-22 21:29:00  23.411053    23.33      25.0     24.12

2019-08-22 21:30:00        NaN      NaN       NaN       NaN

2019-08-22 21:31:00        NaN      NaN       NaN       NaN

2019-08-22 21:32:00        NaN      NaN       NaN       NaN

...                        ...      ...       ...       ...

2019-08-23 22:17:00        NaN      NaN       NaN       NaN

2019-08-23 22:18:00        NaN      NaN       NaN       NaN

2019-08-23 22:19:00        NaN      NaN       NaN       NaN

2019-08-23 22:20:00        NaN      NaN       NaN       NaN

2019-08-23 22:21:00  23.400000    23.33      25.0     24.12

你顯然有很多丟失的數據,采樣間隔這么小,數據點稀疏,我猜你的實際數據集中有更多(理想情況下,你希望在每個重采樣間隔中至少有一個數據點)。


現在由您和您的實際數據決定如何進行。.nearest()您可以使用而不是填充缺失的數據.mean()。如果缺少的項目只是少數,您可以用滾動平均值填充它們。


查看完整回答
反對 回復 2023-02-07
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號