目的:我正在與一個Arduino通信從稱重傳感器每秒一次得到的數據丕項目(即蟒蛇)。我應該使用什麼數據結構來記錄(並進行實時分析)Python中的這些數據?
我希望能夠做的事情,如:
- 切片數據,以獲得最後的記錄數據點的值。
- 切片數據以獲取最後n秒數據點的平均值。
- 對最後n個數據點進行迴歸以得到g/s。
- 從日誌中刪除超過n秒的數據點。
當前嘗試:
字典:我已經附加了一個圓形的時間字典一個新的密鑰(見下文),但是這使得切片和分析難。
log = {}
def log_data():
log[round(time.time(), 4)] = read_data()
熊貓據幀:這是一個我一直在跳了,因爲是使時間序列切片和分析變得更簡單,但是這(How to handle incoming real time data with python pandas)似乎是說其是一個壞主意。我無法遵循他們的解決方案(即存儲在字典中,並且每隔幾秒鐘批量處理一次),因爲我希望實時計算費率(迴歸)。
這個問題(ECG Data Analysis on a real-time signal in Python)似乎與我有同樣的問題,但沒有真正的解決方案。
目標:
那麼,什麼是在Python處理和分析實時的時間序列數據的正確方法?這似乎是每個人都需要做的事情,所以我想有必要爲此預建功能?
感謝,
邁克爾
你看過deques嗎? https://docs.python.org/2/library/collections.html#deque-objects此外,這篇文章確實非常廣泛。你應該考慮縮小範圍。 – Alexander
我認爲deques會比列表更好,但他們真的只解決*問題1 *。在*問題2 *和* 4 *我最後n秒刪除,而不是n個項目@Alexander –
順便說一句 - 你提到數據每秒進入一次。所以在你的應用程序中,你不能忽略時間戳,只是基於計數來切片?這會讓事情變得更簡單。換句話說,如果你想要最後5秒,你可以只做'data [-5:]'並且假設最後5個項目是最後5秒? – exp1orer