我正在開發折線圖。數據由傳感器生成並且是元組(時間戳,值)。傳感器每60秒左右創建一個新的數據點。將數據集縮小到較小的大小,將信息的要點保存在數據集中
現在我想在圖表中顯示它,而我的限制是在圖形上的大約900個點。在這張圖的日常觀察中,我得到了大約1440分,這太多了。
我正在尋找一種通用的方法來將任意大小的數據集縮小到固定大小(在我的情況下爲900),同時它使時間戳分佈保持線性。
感謝
我正在開發折線圖。數據由傳感器生成並且是元組(時間戳,值)。傳感器每60秒左右創建一個新的數據點。將數據集縮小到較小的大小,將信息的要點保存在數據集中
現在我想在圖表中顯示它,而我的限制是在圖形上的大約900個點。在這張圖的日常觀察中,我得到了大約1440分,這太多了。
我正在尋找一種通用的方法來將任意大小的數據集縮小到固定大小(在我的情況下爲900),同時它使時間戳分佈保持線性。
感謝
我相信你正在試圖重採樣您的數據。您目前的採樣率爲每秒1/60個採樣點,並且您試圖達到每秒1/96個採樣點(900 /(24 * 60 * 60))。兩個比率之間的比率是5/8。
如果你搜索「python resample」,你會發現其他類似的問題和文章涉及numpy和熊貓,它們已經建立在它的例程。
做手工,你可以先上採樣 5獲得每秒7200個樣本,然後下采樣 8踏踏實實爲每秒900個樣本。
要進行上採樣,您可以創建一個新列表五次,並用現有數據填充每五個元素。然後,您可以執行線性插值來填補空白。
你可以通過簡單地獲取每第八個元素來縮減採樣。
是的,我在寫問題幾分鐘後發現了正確的術語。我目前正在研究熊貓的重新採樣,它如何做到我需要的 –
這是我的最終使用溶液大熊貓:
df = pd.read_json('co2.json')
# calculates the 'rule' parameter for resampling
seconds = int(df.tail(1)[0]) - int(df.head(1)[0])
rule = seconds // 960
df.index = pd.to_datetime(df[0], unit='s')
df.resample('%sS' % rule).mean()
您應該添加預期的輸入和輸出的例子,看看https://stackoverflow.com/help/mcve – Netwave
請澄清的要求。你想讓時間戳分佈完全線性或近似線性足夠好嗎?是否允許某種「混疊」,其中兩個相鄰點的結果以某種方式進行平均? –
在這一點上,我還不知道。我會選擇Pandas的resample可以提供的並且在現實生活中看到它 –