[英]Resampling Hz in a pandas dataframe
我正在python上的熊貓項目中工作。 我收到這樣的.csv文件作為輸入:
Name Timestamp Data
A1 259 [1.1,1.0,0.1]
A1 260 [-0.1,1.2,0.3]
A1 261 [0.1,0.2,-0.3]
...
A1 14895 [1.4,0.3,1.8]
...
A2 278 [-1.1,1.2,0.4]
A2 353 [-0.1,1.2,0.3]
A2 409 [-0.1,1.2,0.3]
...
A2 14900 [-0.1,1.2,0.3]
...
A1140 107 [-0.5,-1.0,-1.0]
A1140 107 [0.6,0.1,0.3]
A1140 114 [-1.1,-1.2,0.3]
...
A1140 14995 [-1,1.2,0.4]
我有1140多個名稱,每個名稱都有成千上萬的數據。 數據以200 Hz的頻率記錄,我認為時間戳記數字表示毫秒,盡管我不確定,我無法訪問此信息。 我必須重新采樣到50 Hz頻率。
我怎樣才能做到這一點? 我需要將時間戳轉換為實際秒數,然后使用0.25s的.resample()
函數嗎? 我應該使用.groupby["Name"]
函數嗎? 先感謝您!
即使您不確定時間戳記,我也無法完全完整地回答該問題,但我會盡力為您提供一些一般性指導。
您在這里擁有的稱為面板數據 ,每個“名稱”有許多不同的時間序列。
groupby(['Name']).apply(<func>)
確實是一個有用的方法,因為它允許分別操縱每個不同的名稱,從而使您可以使用時間序列的更簡單數據類型。
時間序列是以下類型的數據:
Date Value
2000-01-01 00:00:00 3
2000-01-01 00:03:00 12
2000-01-01 00:06:00 21
如您所見,每個樣本的采集時間為3分鍾。 我們可以調用resample()
並將其轉換為10分鍾,如下所示:
series.resample('10T').mean()
請注意,而不是mean
你可以使用.apply(<func>)
來選擇下采樣方法。 有關頻率的更多信息,請考慮此問題。
df.groupby(['Name']).resample('20L').mean()
或使用for循環遍歷每個名稱,並分別對每個系列使用重采樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.