2017-09-18 9 views
1

私は時間のインデックス(秒)で生の心拍数データを持つpandasデータフレームを持っています。私は、ユーザー定義のウィンドウ(例えば10秒)の平均持つことができるようにパンダのユーザー定義ウィンドウの平均を見つける

私はビンにデータをしようとしています - ないローリング平均、10秒のちょうど平均を、など、10Sは、以下のその後

import pandas as pd 

hr_raw = pd.read_csv('hr_data.csv', index_col='time') 
print(hr_raw) 

     heart_rate 
time    
0.6  164.0 
1.0  182.0 
1.3  164.0 
1.6  150.0 
2.0  152.0 
2.4  141.0 
2.9  163.0 
3.2  141.0 
3.7  124.0 
4.2  116.0 
4.7  126.0 
5.1  116.0 
5.7  107.0 

上記の例のデータを使用して、私はユーザー定義のウィンドウサイズを設定することができます(2秒を使用します)、2秒のインクリメントのインデックスを持つ新しいデータフレームを生成し、 'heart_rate' (そしてデータフレームの終わりまで続けるべきです)。例えば

 heart_rate 
time    
2.0  162.40 
4.0  142.25 
6.0  116.25 

私はビンへの方法(例えば、ヒストグラムを作成)ビンの予め定められた数に基づいてデータを見つけるように見えることができ、これは、カウント/周波数を返します。

ありがとうございました。

答えて

1

groupbyとする必要があります。私たちの答えの間わずか違いの理由は、上限が除外されていることであることを

df.groupby((df.index // 2 + 1) * 2).mean() 

     heart_rate 
time    
2.0  165.00 
4.0  144.20 
6.0  116.25 

注意。つまり、2.0秒で読み取った値は、4.0秒の時間間隔で考慮されます。これが通常行われる方法ですが、TimeGrouperの同様の解決方法でも同じ結果が得られます。

1

coldspeedは指摘のように、2Sは、あなたが2倍バケツにそれを必要とするならば、あなたは

In [1038]: df.groupby(np.ceil(df.index/2)*2).mean() 
Out[1038]: 
     heart_rate 
time 
2.0  162.40 
4.0  142.25 
6.0  116.25 
することができます、しかし、4Sに考慮されます
関連する問題