時系列のデータにアクセスする¶
データにアクセスする¶
本ページの例では、2つのデータ列を有するサンプリング時系列を考える。 flux
そして temp
**
>>> from astropy import units as u
>>> from astropy.timeseries import TimeSeries
>>> ts = TimeSeries(time_start='2016-03-22T12:30:31',
... time_delta=3 * u.s,
... data={'flux': [1., 4., 5., 3., 2.] * u.Jy,
... 'temp': [40., 41., 39., 24., 20.] * u.K},
... names=('flux', 'temp'))
そこまでは Table
名前順にアクセスすることができます:
>>> ts['flux']
<Quantity [ 1., 4., 5., 3., 2.] Jy>
>>> ts['time']
<Time object: scale='utc' format='isot' value=['2016-03-22T12:30:31.000' '2016-03-22T12:30:34.000'
'2016-03-22T12:30:37.000' '2016-03-22T12:30:40.000'
'2016-03-22T12:30:43.000']>
また,INDEX::アクセス行を経由することができる.
>>> ts[0]
<Row index=0>
time flux temp
Jy K
object float64 float64
----------------------- ------- -------
2016-03-22T12:30:31.000 1.0 40.0
その後、各値は、1列にアクセスしてから1行にアクセスすることによってアクセスすることができ、その逆も同様である。
>>> ts[0]['flux']
<Quantity 1. Jy>
>>> ts['temp'][2]
<Quantity 39. K>
訪問時間.¶
上の TimeSeries
vt.的 time
列は通常の列アクセス表示法を用いてアクセス可能であり,中に示すように Accessing Data しかし、もっと便利に使うこともできます time
属性::
>>> ts.time
<Time object: scale='utc' format='isot' value=['2016-03-22T12:30:31.000' '2016-03-22T12:30:34.000'
'2016-03-22T12:30:37.000' '2016-03-22T12:30:40.000'
'2016-03-22T12:30:43.000']>
For BinnedTimeSeries
, we provide three attributes: time_bin_start
,
time_bin_center
, and time_bin_end
:
>>> from astropy.timeseries import BinnedTimeSeries
>>> bts = BinnedTimeSeries(time_bin_start='2016-03-22T12:30:31',
... time_bin_size=3 * u.s, n_bins=5)
>>> bts.time_bin_start
<Time object: scale='utc' format='isot' value=['2016-03-22T12:30:31.000' '2016-03-22T12:30:34.000'
'2016-03-22T12:30:37.000' '2016-03-22T12:30:40.000'
'2016-03-22T12:30:43.000']>
>>> bts.time_bin_center
<Time object: scale='utc' format='isot' value=['2016-03-22T12:30:32.500' '2016-03-22T12:30:35.500'
'2016-03-22T12:30:38.500' '2016-03-22T12:30:41.500'
'2016-03-22T12:30:44.500']>
>>> bts.time_bin_end
<Time object: scale='utc' format='isot' value=['2016-03-22T12:30:34.000' '2016-03-22T12:30:37.000'
'2016-03-22T12:30:40.000' '2016-03-22T12:30:43.000'
'2016-03-22T12:30:46.000']>
また、 time_bin_size
ストレージ·ボックス·サイズにアクセスするために属性を使用することができます:
>>> bts.time_bin_size
<Quantity [3., 3., 3., 3., 3.] s>
注意してください time_bin_start
そして time_bin_size
実際の列として利用可能であり time_bin_center
そして time_bin_end
すべて実行中に計算されます。
見 異なる時間表現間で変換する 異なる時間表示法の間で変更されるより多くの情報については、参照されたい。
列子集を抽出する.¶
新しい時系列を作ることができます flux
列は、以下の動作を実行する。
>>> ts['time', 'flux']
<TimeSeries length=5>
time flux
Jy
object float64
----------------------- -------
2016-03-22T12:30:31.000 1.0
2016-03-22T12:30:34.000 4.0
2016-03-22T12:30:37.000 5.0
2016-03-22T12:30:40.000 3.0
2016-03-22T12:30:43.000 2.0
新しい列は、(ビューではなく)オリジナル列のコピーになることに留意されたい。平原を作ることもできます QTable
抽出することで flux
そして temp
列:
>>> ts['flux', 'temp']
<QTable length=5>
flux temp
Jy K
float64 float64
------- -------
1.0 40.0
4.0 41.0
5.0 39.0
3.0 24.0
2.0 20.0
行のサブセットを抽出する¶
TimeSeries
対象を行ごとにスライスし,使用する文法と Time
例えば、:
>>> ts[0:2]
<TimeSeries length=2>
time flux temp
Jy K
object float64 float64
----------------------- ------- -------
2016-03-22T12:30:31.000 1.0 40.0
2016-03-22T12:30:34.000 4.0 41.0
TimeSeries
紹介した機能自動索引オブジェクトも使用します 表索引 それがそうです。行と行のサブセットにアクセスする能力を属性する. loc
そして iloc
属性です。
♪the loc
属性はスライスに用いることができる TimeSeries
時間順にソートされたオブジェクト。例えば、以下は、所与のタイムスタンプのすべてのエントリを抽出するために使用されてもよい。
>>> from astropy.time import Time
>>> ts.loc[Time('2016-03-22T12:30:31.000')]
<Row index=0>
time flux temp
Jy K
object float64 float64
----------------------- ------- -------
2016-03-22T12:30:31.000 1.0 40.0
または以下の時間範囲内である。
>>> ts.loc['2016-03-22T12:30:30':'2016-03-22T12:30:41']
<TimeSeries length=4>
time flux temp
Jy K
object float64 float64
----------------------- ------- -------
2016-03-22T12:30:31.000 1.0 40.0
2016-03-22T12:30:34.000 4.0 41.0
2016-03-22T12:30:37.000 5.0 39.0
2016-03-22T12:30:40.000 3.0 24.0
この場合、指定されていません Time
-文字列がISO 8601時間文字列である場合、このオプションは必要ありません。そこまでは QTable
そして Table
クラス loc
属性は pandas 中の最後の項 loc
範囲が含まれています。
なお,結果はつねに時間順にソートされることに注意されたい.同様に iloc
属性は、時系列から行を抽出するために使用することができる 時間順にソートする したがって、例えば、最初の2つのエントリ(時間的に)は、以下のコマンドによってアクセスすることができる:
>>> ts.iloc[0:2]
<TimeSeries length=2>
time flux temp
Jy K
object float64 float64
----------------------- ------- -------
2016-03-22T12:30:31.000 1.0 40.0
2016-03-22T12:30:34.000 4.0 41.0