データテーブル. (astropy.table
)¶
序言:序言¶
astropy.table
異種データテーブルを熟知した方法で記憶して操作する機能を提供する numpy
ユーザーです。このソフトウェアパッケージのいくつかの注目すべき機能は、以下のことを含む。
様々な入力データ構造やタイプから表を初期化する.
テーブルは、列の追加または削除、列名の変更、または新しいデータ行の追加によって修正されます。
欠損値を含む表を扱う.
柔軟なデータ構造として表と列メタデータを含む.
列の説明,単位,出力フォーマットを指定する.
閲覧長表を交互にスクロールして使用するのと同様に
more
それがそうです。新しいテーブルは、表から行または列を選択することで作成されます。
執行する. 表操作 データベース接続、直列接続、箱詰めなど。
テーブルインデックスは、エントリまたは範囲を迅速に検索するために維持される。
多次元列を操作する。
処理表中の非自機(混合)列タイプ.
方法: 読み書き表オブジェクト 書類に転送します。
以下の用途のためのフック サブクラス化表 そのコンポーネントのクラスである.
スタート¶
フォーム作成,アクセスフォーム要素,修正フォームの基本ワークフローを以下に示す.これらの例は簡明で完全な例を示しています astropy.table
文書は Vbl.使用 table 一節です。
First create a simple table with columns of data named a
, b
, c
, and
d
. These columns have integer, float, string, and Quantity
values
respectively:
>>> from astropy.table import QTable
>>> import astropy.units as u
>>> import numpy as np
>>> a = np.array([1, 4, 5], dtype=np.int32)
>>> b = [2.0, 5.0, 8.5]
>>> c = ['x', 'y', 'z']
>>> d = [10, 20, 30] * u.m / u.s
>>> t = QTable([a, b, c, d],
... names=('a', 'b', 'c', 'd'),
... meta={'name': 'first table'})
コメント:
列
a
これはnumpy
指定のあるdtype
のint32
それがそうです。データタイプが提供されていない場合、整数のデフォルトタイプはint64
MacとLinuxでint32
Windows上にあります。列
b
1人前ですfloat
値は,以下のように表される.float64
それがそうです。列
c
1人前ですstr
値は,Unicodeと表す.参照してください バイト列. より多くの情報を得ることができます列
d
これはQuantity
配列しています私たちが使ったからですQTable
これはネイティブを格納していますQuantity
交渉のテーブルで持ってきました 単位と数量 (astropy.units ) 表のこの列に追加します。
注釈
表データに単位がない場合やご利用を希望しない場合は Quantity
使用することができます Table
分類して表を作成する。♪the only 両者の違い QTable
そして Table
単位を持つ列を追加する際の行為.参照してください 数量と数量表 そして 単位付き柱 差異や用例の詳細については、参照されたい。
他にも多くの方法があります 表を構築する 行リスト(メタグループまたは辞書)からのものを含み, numpy
構造化または二次元配列は、列や行をインクリメントすることで、 pandas.DataFrame
それがそうです。
いくつかの方法があります アクセス表. それがそうです。表の値および列の定義に関する詳細は、以下のように取得することができます。
>>> t
<QTable length=3>
a b c d
m / s
int32 float64 str1 float64
----- ------- ---- -------
1 2.0 x 10.0
4 5.0 y 20.0
5 8.5 z 30.0
この表に関する要約情報は、以下のように取得することができます。
>>> t.info
<QTable length=3>
name dtype unit class
---- ------- ----- --------
a int32 Column
b float64 Column
c str1 Column
d float64 m / s Quantity
Jupyterノートでは,フォームにフォーマットされたHTMLフォームが表示される(フォーム表示方式に関する詳細な情報は変更することができる. astropy.table.default_notebook_table_class
構成項):
あるいは、ブラウザ内で検索することで、より華やかなノートインタフェースを取得し、使用することもできます show_in_notebook
:
フォームを印刷する場合(ノートまたはテキストコンソールセッションから)場合、フォーマットされたバージョンが表示されます。
>>> print(t)
a b c d
m / s
--- --- --- -----
1 2.0 x 10.0
4 5.0 y 20.0
5 8.5 z 30.0
特定の列のフォーマットが好きでない場合は、以下のように変更することができます。
>>> t['b'].info.format = '7.3f'
>>> print(t)
a b c d
m / s
--- ------- --- -----
1 2.000 x 10.0
4 5.000 y 20.0
5 8.500 z 30.0
より長いテーブルの場合、フォームを上下にスクロールすることができ、毎回1ページスクロールすることができます:
>>> t.more()
ブラウザでHTML形式のフォームとして表示することもできます:
>>> t.show_in_browser()
またはインタラクティブ(検索可能および順序付け可能)Javascriptテーブルとして:
>>> t.show_in_browser(jsviewer=True)
この表に関するいくつかの高度な情報をチェックします:
>>> t.colnames
['a', 'b', 'c', 'd']
>>> len(t)
3
>>> t.meta
{'name': 'first table'}
よく知っている列ごとまたは行ごとにデータにアクセスする numpy
構造化配列文法::
>>> t['a'] # Column 'a'
<Column name='a' dtype='int32' length=3>
1
4
5
>>> t['a'][1] # Row 1 of column 'a'
4
>>> t[1] # Row object for table row index=1
<Row index=1>
a b c d
m / s
int32 float64 str1 float64
----- ------- ---- -------
4 5.000 y 20.0
>>> t[1]['a'] # Column 'a' of row 1
4
行(スライスを使用)または列(列名を使用)でテーブルのサブセットを検索することができ、サブセットは新しいテーブルとして返される:
>>> print(t[0:2]) # Table object with rows 0 and 1
a b c d
m / s
--- ------- --- -----
1 2.000 x 10.0
4 5.000 y 20.0
>>> print(t['a', 'c']) # Table with cols 'a', 'c'
a c
--- ---
1 x
4 y
5 z
表を修正する その場で柔軟で、仕事の仕方はあなたが予想していたように:
>>> t['a'][:] = [-1, -2, -3] # Set all column values in place
>>> t['a'][2] = 30 # Set row 2 of column 'a'
>>> t[1] = (8, 9.0, "W", 4 * u.m / u.s) # Set all row values
>>> t[1]['b'] = -9 # Set column 'b' of row 1
>>> t[0:2]['b'] = 100.0 # Set column 'b' of rows 0 and 1
>>> print(t)
a b c d
m / s
--- ------- --- -----
-1 100.000 x 10.0
8 100.000 W 4.0
30 8.500 z 30.0
以下の置換、追加、削除、および重命列を使用して:
>>> t['b'] = ['a', 'new', 'dtype'] # Replace column b (different from in-place)
>>> t['e'] = [1, 2, 3] # Add column d
>>> del t['c'] # Delete column c
>>> t.rename_column('a', 'A') # Rename column a to A
>>> t.colnames
['A', 'b', 'd', 'e']
表に新たなデータ行を追加すると以下のようになる.単位値は中で与えられていることに注意してください cm / s
ただし,表に追加し, 0.1 m / s
既存の単位と一致する。
>>> t.add_row([-8, 'string', 10 * u.cm / u.s, 10])
>>> len(t)
4
例えば、設定することによって、欠落値をサポートするテーブルを作成することができます masked=True
**
>>> t = QTable([a, b, c], names=('a', 'b', 'c'), masked=True, dtype=('i4', 'f8', 'U1'))
>>> t['a'].mask = [True, True, False]
>>> t
<QTable masked=True length=3>
a b c
int32 float64 str1
----- ------- ----
-- 2.0 x
-- 5.0 y
5 8.5 z
In addition to Quantity
, you can include certain object types like
Time
, SkyCoord
, and
NdarrayMixin
in your table. These "mixin" columns behave like
a hybrid of a regular Column
and the native object type (see
混合柱). For example:
>>> from astropy.time import Time
>>> from astropy.coordinates import SkyCoord
>>> tm = Time(['2000:002', '2002:345'])
>>> sc = SkyCoord([10, 20], [-45, +40], unit='deg')
>>> t = QTable([tm, sc], names=['time', 'skycoord'])
>>> t
<QTable length=2>
time skycoord
deg,deg
object object
--------------------- ----------
2000:002:00:00:00.000 10.0,-45.0
2002:345:00:00:00.000 20.0,40.0
起動以来の時間間隔を計算してみましょう Chandra X-ray Observatory 飛行機に乗る STS-93 私たちの表に格納されています Quantity
日数:
>>> dt = t['time'] - Time('1999-07-23 04:30:59.984')
>>> t['dt_cxo'] = dt.to(u.d)
>>> t['dt_cxo'].info.format = '.3f'
>>> print(t)
time skycoord dt_cxo
deg,deg d
--------------------- ---------- --------
2000:002:00:00:00.000 10.0,-45.0 162.812
2002:345:00:00:00.000 20.0,40.0 1236.812
Vbl.使用 table
¶
使用の詳細情報 astropy.table
以下の各節で関連情報を提供する.
構造表¶
アクセス表.¶
表を修正する¶
表操作¶
標引.¶
マスクをする.¶
表のI/O¶
混合柱¶
実施する.¶
性能提示¶
建設する. Table
以下のコマンドを用いてオブジェクトをプログレッシブに表示する add_row()
とても遅いかもしれません
>>> from astropy.table import Table
>>> t = Table(names=['a', 'b'])
>>> for i in range(100):
... t.add_row((1, 2))
行を作成するためにコードにループする必要がある場合、より速い方法は、行リストを構築して作成することです Table
最後の対象:
>>> rows = []
>>> for i in range(100):
... rows.append((1, 2))
>>> t = Table(rows=rows, names=['a', 'b'])
編集中です Table
使用 MaskedColumn
至る .ecsv
Vbl.使用 write()
とても遅いかもしれません
>>> from astropy.table import Table
>>> import numpy as np
>>> x = np.arange(10000, dtype=float)
>>> tm = Table([x], masked=True)
>>> tm.write('tm.ecsv', overwrite=True)
もしあなたが書きたいなら .ecsv
Vbl.使用 write()
そして使用します serialize_method='data_mask'
それがそうです。これは非マスクバージョンのデータを使用した方が速い:
>>> tm.write('tm.ecsv', overwrite=True, serialize_method='data_mask')
読み該当Memmap=True¶
デフォルトの場合 read()
表全体をメモリに読み込むと,大量のメモリや時間を占有する可能性があり,具体的には表のサイズやファイルフォーマットに依存する.場合によっては、オプションを選択することによって、テーブルのサブセットのみを読み出すことができる memmap=True
それがそうです。
FITバイナリテーブルの場合、データはライン毎に格納され、ラインのサブセットのみを読み出すことができるが、読み出し整列は、フォームデータ全体をメモリにロードする:
>>> import numpy as np
>>> from astropy.table import Table
>>> tbl = Table({'a': np.arange(1e7),
... 'b': np.arange(1e7, dtype=float),
... 'c': np.arange(1e7, dtype=float)})
>>> tbl.write('test.fits', overwrite=True)
>>> table = Table.read('test.fits', memmap=True) # Very fast, doesn't actually load data
>>> table2 = tbl[:100] # Fast, will read only first 100 rows
>>> print(table2) # Accessing column data triggers the read
a b c
---- ---- ----
0.0 0.0 0.0
1.0 1.0 1.0
2.0 2.0 2.0
... ... ...
98.0 98.0 98.0
99.0 99.0 99.0
Length = 100 rows
>>> col = table['my_column'] # Will load all table into memory
今のところ read()
支持しない memmap=True
HDF 5およびASCIIファイルフォーマットに使用されます。
参照/API¶
Asterpy.tableパッケージ¶
機能¶
|
列に沿って表(水平)を重ねる |
|
指定キー上で左テーブルと右テーブルの連結を実行する. |
|
表示入力テーブル |
|
表の行の集合の差をとる. |
|
折り返し表の唯一の行です。 |
|
垂直スタックテーブル(行に沿って) |
|
深さスタックの列に沿って |
|
距離マッチングを用いてSkyCoord列を接続するブースタ関数を用いる. |
|
距離マッチング連結表列のブースタ関数を用いる. |
クラス¶
|
純粋なPythonの基本的な二分木は、インデックスエンジンとして使われます。 |
|
Tableオブジェクトで使用するデータ列を定義する. |
|
|
|
名前、記述、フォーマットなどのメタ情報のコンテナ。 |
|
の構成パラメータ |
|
フォームを提供するインタラクティブなHTML導出. |
|
Tableオブジェクトで使用するマスクデータ列を定義する. |
|
Mixin列クラスは,任意の数の放射線を表に格納することを許可する. |
|
異種データテーブルのクラスを示す. |
|
Tableオブジェクトの1行のクラスを示す. |
|
木ベースの高速インデックス実装、使用 |
Dictのサブクラスは、表現において、配列が表中の列に含まれる混合属性(主データまたは類似配列の属性)の名前(および可能な他の情報)を含むために使用される。 |
|
|
配列配列コンテナをNumpy配列リストを用いて実現する. |
文字列に割り当てられた値が基本(数字)文字列長が短すぎて切断された場合,警告クラスが出現する. |
|
|
異種データテーブルのクラスを示す. |
|
表サブクラスのカスタム属性を定義するための記述子. |
|
1組の列のOrderedDictサブクラス. |
|
|
|
|
メソッドは表列の場合の警告クラスを置き換える. Table.__setitem__ 文法、例えば |
|
|
出力リストの可視性を印刷するタプルを維持制御します。 |