2017-08-24 100 views
0

我正在開發折線圖。數據由傳感器生成並且是元組(時間戳,值)。傳感器每60秒左右創建一個新的數據點。將數據集縮小到較小的大小,將信息的要點保存在數據集中

現在我想在圖表中顯示它,而我的限制是在圖形上的大約900個點。在這張圖的日常觀察中,我得到了大約1440分,這太多了。

我正在尋找一種通用的方法來將任意大小的數據集縮小到固定大小(在我的情況下爲900),同時它使時間戳分佈保持線性。

感謝

+0

您應該添加預期的輸入和輸出的例子,看看https://stackoverflow.com/help/mcve – Netwave

+0

請澄清的要求。你想讓時間戳分佈完全線性或近似線性足夠好嗎?是否允許某種「混疊」,其中兩個相鄰點的結果以某種方式進行平均? –

+0

在這一點上,我還不知道。我會選擇Pandas的resample可以提供的並且在現實生活中看到它 –

回答

1

我相信你正在試圖重採樣您的數據。您目前的採樣率爲每秒1/60個採樣點,並且您試圖達到每秒1/96個採樣點(900 /(24 * 60 * 60))。兩個比率之間的比率是5/8。

如果你搜索「python resample」,你會發現其他類似的問題和文章涉及numpy和熊貓,它們已經建立在它的例程。

做手工,你可以先上採樣 5獲得每秒7200個樣本,然後下采樣 8踏踏實實爲每秒900個樣本。

要進行上採樣,您可以創建一個新列表五次,並用現有數據填充每五個元素。然後,您可以執行線性插值來填補空白。

你可以通過簡單地獲取每第八個元素來縮減採樣。

+0

是的,我在寫問題幾分鐘後發現了正確的術語。我目前正在研究熊貓的重新採樣,它如何做到我需要的 –

0

這是我的最終使用溶液大熊貓:

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() 
相關問題