時系列のデータにアクセスする

データにアクセスする

本ページの例では、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