パンダセットとドッキングします¶
♪the astropy.timeseries
package is not the only package to provide functionality related to time series. Another notable package is pandas これは1つの pandas.DataFrame
級友たち。その主な利点は astropy.timeseries
天文研究の背景には以下の点がある。
時間列は一つです
Time
オブジェクトは、非常に高精度な時間表示をサポートし、異なる時間スケールやフォーマット(例えば、ISO 8601タイムスタンプ、儒略日付など)間での変換を容易にする。データ列は
Quantity
単位付きの対象。♪the
BinnedTimeSeries
クラスは幅可変のタイムボックスを含む.一般的な時系列ファイルフォーマットのための内蔵リーダと、リーダ/ライタをカスタマイズする能力とがある。
しかし場合によってはパンダを使って DataFrame
オブジェクトは意味があるかもしれないので,変換/スレーブに変換する方法を提供する. DataFrame
物体です。
例を引く¶
簡明な例を考えると、この例は DataFrame
:
>>> import pandas
>>> import numpy as np
>>> df = pandas.DataFrame()
>>> df['a'] = [1, 2, 3]
>>> times = np.array(['2015-07-04', '2015-07-05', '2015-07-06'], dtype=np.datetime64)
>>> df.set_index(pandas.DatetimeIndex(times), inplace=True)
>>> df
a
2015-07-04 1
2015-07-05 2
2015-07-06 3
We can convert this to an astropy
TimeSeries
using
from_pandas()
:
>>> from astropy.timeseries import TimeSeries
>>> ts = TimeSeries.from_pandas(df)
>>> ts
<TimeSeries length=3>
time a
object int64
----------------------------- -----
2015-07-04T00:00:00.000000000 1
2015-07-05T00:00:00.000000000 2
2015-07-06T00:00:00.000000000 3
変換しています DataFrame
ご利用いただけます to_pandas()
:
>>> ts['b'] = [1.2, 3.4, 5.4]
>>> df_new = ts.to_pandas()
>>> df_new
a b
time
2015-07-04 1 1.2
2015-07-05 2 3.4
2015-07-06 3 5.4
時間列に欠落している値をサポートし、パンダのNATオブジェクトに正しく変換する:
>>> ts.time[2] = np.nan
>>> ts
<TimeSeries length=3>
time a b
object int64 float64
----------------------------- ----- -------
2015-07-04T00:00:00.000000000 1 1.2
2015-07-05T00:00:00.000000000 2 3.4
-- 3 5.4
>>> df_missing = ts.to_pandas()
>>> df_missing
a b
time
2015-07-04 1 1.2
2015-07-05 2 3.4
NaT 3 5.4