一連の時間料金があります。各料金は 1 時間全体で有効です。これらの価格を Pandas で表現し、任意のより高い頻度 (分や秒など) でインデックスを付けて演算を行うことができるようにする最良の方法は何ですか?
データの詳細
サンプル価格は次のとおりです。
>>> prices = Series(randn(5), pd.date_range('2013-01-01 12:00', periods = 5, freq='H'))
>>> prices
2013-01-01 12:00:00 -1.001692
2013-01-01 13:00:00 -1.408082
2013-01-01 14:00:00 -0.329637
2013-01-01 15:00:00 1.005882
2013-01-01 16:00:00 1.202557
Freq: H
13:37:42
では、値が必要な場合(13:00 と同じであると予想されます)、どの表現を使用すればよいでしょうか?
>>> prices['2013-01-01 13:37:42']
...
KeyError: <Timestamp: 2013-01-01 13:37:42>
リサンプリング
価格を再サンプリングして詳細を入力できることはわかっていますが ( ffill
、そうですか?)、それはあまり良い解決策とは思えません。インデックスを作成する頻度を想定する必要があり、読みやすさが低下するからです。不要なデータ ポイントが多すぎます。
期間
一見すると a が機能してPeriodIndex
いるように見えます
>>> price_periods = prices.to_period()
>>> price_periods['2013-01-01 13:37:42']
-1.408082
しかし、時系列のシリーズは、Series
. amounts
特定の瞬間に購入したアイテムの数を示す別のシリーズがあるとします。価格を計算したい場合は、2 つの系列を乗算する必要があります。
>>> amounts = Series([1,2,2], pd.DatetimeIndex(['2013-01-01 13:37', '2013-01-01 13:57', '2013-01-01 14:05']))
>>> amounts*price_periods
しかし、例外が発生し、IPy Notebook がフリーズすることさえあります。インデックス作成も役に立ちません。
>>> ts_periods[amounts.index]
構造はまだ進行中ですかPeriodIndex
、それともこれらの機能は追加されませんか? 私が使用すべきだった他の構造はありますか (または、PeriodIndex
成熟する前に今のところ使用する必要があります)? 私はパンダバージョンを使用して0.9.0.dev-1e68fd9
います。