1

私はパンダが初めてです。時系列データがあります。次の操作を簡単に行うにはどうすればよいですか?

入力と呼ばれる2次元マトリックスがあります。各行には 5 つの要素があります。たくさんの行があります (数千)

input[t,:] = [f1, f2, f3, f4, f5]

(1) サンプル間の相対差を計算する必要があります。

すなわちrel[t,:] = ( input[t,:]-input[t-1,:] ) / input[t-1,:]

(2) サイズ 80 のスライディング ウィンドウを作成する必要があります。

すなわちwin[t,:] = [rel[t,:],rel[t-1,:],...,rel[t-79,:]]

Pandas、または scikit.timeseries などの他のフレームワークでこれを行うにはどうすればよいですか。

4

2 に答える 2

2

ドキュメントは、これらのタイプの操作について非常に包括的です

見る:

1) http://pandas.pydata.org/pandas-docs/dev/timeseries.html#time-series-related-instance-methods

2) http://pandas.pydata.org/pandas-docs/dev/computation.html#expanding-window-moment-functions

于 2013-03-28T20:16:06.800 に答える
2

パンダにはおそらくそれを簡単にする特定の機能がありますが、プレーンな numpy で両方を行うことができます。しかし:

rel = np.diff(input) / input[:-1]

from numpy.lib.stride_tricks import as_strided
win = as_strided(rel, shape=(rel.shape[0]-79, 80), strides=rel.strides*2)

やります。


入力に複数の行がある場合でも、上記を次のように実行できます。

rel = np.diff(input, axis=1) / input[:, :-1]
win = as_strided(rel, shape=(rel.shape[0], rel.shape[1]-79, 80),
                 strides=rel.strides + rel.strides[1:])

ただし、「形状」とマッチングstridesをいじって、正確なウィンドウ形状を取得したい場合があります。

于 2013-03-28T20:19:15.190 に答える