簡體   English   中英

在熊貓數據框中重新采樣Hz

[英]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>)來選擇下采樣方法。 有關頻率的更多信息,請考慮問題。


最后,最好的選擇是嘗試找出確切的時間戳,將其轉換為DateTime,然后使用

 df.groupby(['Name']).resample('20L').mean() 

或使用for循環遍歷每個名​​稱,並分別對每個系列使用重采樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM