0
0

More than 3 years have passed since last update.

CASTableのカラム一覧&データ一覧を取得する

Posted at

SAS ViyaはAIプラットフォームです。PythonやJava、Rなどの言語を通して利用できます。そのSAS Viyaの中で使われているのがCASTableというテーブルオブジェクトです(CASはCloud Analytic Servicesの略です)。今回はCASTableのカラム情報を様々な方法で取得してみます。

データベースからテーブルを取得する

まずはSAS Viyaに接続します。

import swat
conn = swat.CAS('server-name.mycompany.com', 5570, 'username', 'password')

次にCASTableを取得します。今回はIRISデータのCSVを利用します。

tbl = conn.loadtable('data/iris.csv', caslib='casuser').casTable

カラム名だけを取得する

カラム名だけを取得するのは for in でOKです。

for col in tbl:
    print(col)

以下のように出力されます。

sepal_length
sepal_width
petal_length
petal_width
species

カラム名とインデックスを取得する

カラム名に加えてインデックスも取得する場合は enumerate 関数を使います。

for i, col in enumerate(tbl):
    print(i, col)

以下のように出力されます。

0 sepal_length
1 sepal_width
2 petal_length
3 petal_width
4 species

カラム名とカラムの型を取得する

カラム名に加えて型も取得する場合は zip 関数を使います。

for col, dtype in zip(tbl, tbl.dtypes):
    print(col, dtype)

以下のように出力されます。

sepal_length double
sepal_width double
petal_length double
petal_width double
species varchar

CASColumnとして取得する

より細かい情報が取得できる CASColumn として取得する場合には iteritems メソッドを使います。

for col, obj in tbl.iteritems():
    print(col, obj)
    print('')

以下のように出力されます。

sepal_length CASColumn('DATA.IRIS', caslib='CASUSER(username)')['sepal_length'].sort_values(['sepal_length', 'sepal_width'], ascending=[False, True])

sepal_width CASColumn('DATA.IRIS', caslib='CASUSER(username)')['sepal_width'].sort_values(['sepal_length', 'sepal_width'], ascending=[False, True])

petal_length CASColumn('DATA.IRIS', caslib='CASUSER(username)')['petal_length'].sort_values(['sepal_length', 'sepal_width'], ascending=[False, True])

petal_width CASColumn('DATA.IRIS', caslib='CASUSER(username)')['petal_width'].sort_values(['sepal_length', 'sepal_width'], ascending=[False, True])

species CASColumn('DATA.IRIS', caslib='CASUSER(username)')['species'].sort_values(['sepal_length', 'sepal_width'], ascending=[False, True])

データを詳細に取得する

次にデータを行ごとに取得する方法です。まずは iterrows メソッドを使った場合です。

for row in tbl.iterrows():
    print(row)

以下のように出力されます。全部で150行あります。

(0, sepal_length          7.9
sepal_width           3.8
petal_length          6.4
petal_width             2
species         virginica
Name: 0, dtype: object)
(1, sepal_length          7.7
sepal_width           2.6
petal_length          6.9
petal_width           2.3
species         virginica
  :
Name: 148, dtype: object)
(149, sepal_length       4.3
sepal_width          3
petal_length       1.1
petal_width        0.1
species         setosa
Name: 149, dtype: object)

次に itertuples メソッドを使った場合です。

for row in tbl.itertuples():
    print(row)

結果は以下のようになり、値だけが返ってきます。

(0, 7.9000000000000004, 3.7999999999999998, 6.4000000000000004, 2.0, 'virginica')
(1, 7.7000000000000002, 2.6000000000000001, 6.9000000000000004, 2.2999999999999998, 'virginica')
  :
(148, 4.4000000000000004, 3.2000000000000002, 1.3, 0.20000000000000001, 'setosa')
(149, 4.2999999999999998, 3.0, 1.1000000000000001, 0.10000000000000001, 'setosa')

まとめ

カラム情報を取得するにも様々な方法が用意されています。必要に応じて使い分けてください。

SAS for Developers | SAS

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0