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')
まとめ
カラム情報を取得するにも様々な方法が用意されています。必要に応じて使い分けてください。